Types 如何在Z3中定义更高的感应类型
高归纳型是同伦型理论中非常重要的工具。我试图用Z3-SMT-LIB定义一些高归纳类型。一个例子是圆,它是由点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)
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只支持一阶归纳类型。您提供的也是一等货