Skip to content

Fix Induct_on for mutually/nested recursive types #10

Open
@mn200

Description

@mn200

Example problem:

val _ = Hol_datatype `ptree = Leaf of 'ts | Node of 'nts => ptree list`
val ptsize_def = Define`
   (ptsize (Leaf t) = 1) /\
   (ptsize (Node nt ps) = ptsizel ps + 1) /\
   (ptsizel [] = 0) /\
   (ptsizel (p::ps) = ptsize p + ptsizel ps)
`
val ptsize_gt0 = prove(
   ``!t. 0 < ptsize t``,
   Induct_on `t` (* raises exception *)
);

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions