LP creates a single subgoal that involves proving the formula isGenerated(x) using the hypothesessort Set generated by {}, {__}, \U
where isGenerated is a new operator with signature Set->Bool. The names of the hypotheses have the form <simpleId>GenHyp.<number>, where <simpleId> is the current value of the name-prefix setting. User guidance is generally required to finish the proof, for example, by using the induction rule sort Set generated by {}, insert.isGenerated({}) isGenerated({e}) isGenerated(s1) /\ isGenerated(s2) => isGenerated(s1 /\ s2)
To prove a structural induction rule such as
LP also attempts to prove the subgoalssort Nat generated freely by 0:->Nat, f:Nat->Nat, g:Nat->Nat
in addition to the subgoal isGenerated(n).f(n) ~= 0 f(n) = f(n1) <=> n = n1 f(n) ~= g(n1) g(n) ~= 0 g(n) = g(n1) <=> n = n1
To prove a well-founded induction rule such as well founded <, LP creates a single subgoal that involves proving the formula isGenerated(x) using the hypothesis
\A n1 (n1 < n => isGenerated(n1)) => isGenerated(n)