Types 如何在Z3中定义更高的感应类型

Types 如何在Z3中定义更高的感应类型,types,z3,homotopy-type-theory,Types,Z3,Homotopy Type Theory,高归纳型是同伦型理论中非常重要的工具。我试图用Z3-SMT-LIB定义一些高归纳类型。一个例子是圆,它是由点base和路径loop从base自由生成的。我正在使用代码 (declare-datatypes () ((Circle base (loop (Circle Circle))))) (declare-fun x1 () Circle) (declare-fun x2 () Circle) (assert (not (= x1 x2))) (check-sat) (get-model)

高归纳型是同伦型理论中非常重要的工具。我试图用Z3-SMT-LIB定义一些高归纳类型。一个例子是圆,它是由点
base
和路径
loop
base
自由生成的。我正在使用代码

(declare-datatypes () ((Circle base (loop (Circle Circle)))))
(declare-fun x1 () Circle)
(declare-fun x2 () Circle)
(assert (not (= x1 x2)))
(check-sat)
(get-model)
输出是

sat 
(model 
 (define-fun x2 () Circle (loop base)) 
 (define-fun x1 () Circle base) )

问题是:我真的在定义更高的归纳类型,名为circle?

注意,Z3只支持一阶归纳类型。您提供的也是一等货