Consider the following example of a nested subtype:
typedef 'a A = "{a :: 'a fset . True}"
by simp
setup_lifting type_definition_A
typedef 'a B = "{a :: 'a A. True}"
by simp
setup_lifting type_definition_B
Here, the second setup_lifting
of type B
highlights, the missing relator of A
.
Why does 'a A
does not automatically have a relator?
From my understanding, a relator in this simple case would be
lift_definition rel_A :: "('a ⇒ 'b ⇒ bool) ⇒ 'a A ⇒ 'b A ⇒ bool" is
"rel_fset" .
But what properties do I have to prove, to make it an "official" relator for the lifting package?
The datatypes tutorial solved my issue. lift_bnf
was the missing piece.
Robert Soeldner has marked this topic as resolved.
Last updated: Dec 21 2024 at 12:33 UTC