tests induction principles for nested inductive types
Require Import MetaCoq.Template.All.
Require Import destruct_lemma.
Require Import MetaCoq.Template.Pretty.
Require Import List String.
Import ListNotations MonadNotation.
Require Import List.
Import ListNotations.
Require Import standardNested.
Require Import nested_datatypes.
Unset Strict Unquote Universe Mode.
MetaCoq Run (create roseTree4 true true).
Print roseTree4_ind_MC.
Require Import Even.
Print roseTree.
MetaCoq Run (create roseTree true false).
MetaCoq Run (runElim roseTree true false None (Some <% Prop %>)).
MetaCoq Run (runElim roseTree true true None (Some <% Prop %>)).
Check roseTree_ind_MC.
Print roseTree_ind_MC.
Print roseTree2.
MetaCoq Run (create roseTree2 true false).
MetaCoq Run (runElim roseTree2 true true None (Some <% Prop %>)).
Check roseTree2_ind_MC.
Print roseTree2_ind_MC.
Print roseTree3.
MetaCoq Run (runElim roseTree3 true true None (Some <% Prop %>)).
Check roseTree3_ind_MC.
Print roseTree3_ind_MC.
Print roseTree4.
MetaCoq Run (create roseTree4 true false).
MetaCoq Run (runElim roseTree4 true true None (Some <% Prop %>)).
Check roseTree4_ind_MC.
Print roseTree4_ind_MC.
Print roseTree5.
MetaCoq Run (create roseTree5 true false).
MetaCoq Run (runElim roseTree5 true true None (Some <% Prop %>)).
Check roseTree5_ind_MC.
Print roseTree5_ind_MC.
Print roseTreePI1.
MetaCoq Run (create roseTreePI1 true false).
MetaCoq Run (runElim roseTreePI1 true true None (Some <% Prop %>)).
Print roseTreePI1_ind_MC.
Print roseTreePI2.
MetaCoq Run (create roseTreePI2 true false).
MetaCoq Run (runElim roseTreePI2 true true None (Some <% Prop %>)).
Print roseTreePI2_ind_MC.
Print roseTreePI3.
MetaCoq Run (create roseTreePI3 true false).
MetaCoq Run (runElim roseTreePI3 true true None (Some <% Prop %>)).
Print roseTreePI3_ind_MC.
Print roseTreePI4.
MetaCoq Run (create roseTreePI4 true false).
MetaCoq Run (runElim roseTreePI4 true true None (Some <% Prop %>)).
Print roseTreePI4_ind_MC.
Print roseTreePI5.
MetaCoq Run (create roseTreePI5 true false).
MetaCoq Run (runElim roseTreePI5 true true None (Some <% Prop %>)).
Print roseTreePI5_ind_MC.
Print roseTreePI6.
MetaCoq Run (create roseTreePI6 true false).
MetaCoq Run (runElim roseTreePI6 true true None (Some <% Prop %>)).
Print roseTreePI6_ind_MC.
Print roseTreePI7.
MetaCoq Run (create roseTreePI7 true false).
MetaCoq Run (runElim roseTreePI7 true true None (Some <% Prop %>)).
Print roseTreePI7_ind_MC.
Print roseTreePI8.
MetaCoq Run (create roseTreePI8 true false).
MetaCoq Run (runElim roseTreePI8 true true None (Some <% Prop %>)).
Print roseTreePI8_ind_MC.
Print rtree.
MetaCoq Run (create rtree true false).
MetaCoq Run (runElim rtree true true None (Some <% Type %>)).
Print rtree_ind_MC.
Print is_list.
Print is_list_rect.
Print roseTreeNN4.
Print prodAssumption.
(* need implementation of pair *)
Print roseTreeNN1.
MetaCoq Run (create roseTreeNN1 true false).
MetaCoq Run (runElim roseTreeNN1 true true None (Some <% Prop %>)).
Print roseTreeNN1_ind_MC.
Print roseTreeNN2.
MetaCoq Run (create roseTreeNN2 true false).
MetaCoq Run (runElim roseTreeNN2 true true None (Some <% Prop %>)).
Print roseTreeNN2_ind_MC.
Print roseTreeNN3.
MetaCoq Run (create roseTreeNN3 true false).
MetaCoq Run (runElim roseTreeNN3 true true None (Some <% Prop %>)).
Print roseTreeNN3_ind_MC.
Print roseTreeNN4.
MetaCoq Run (create roseTreeNN4 true false).
MetaCoq Run (runElim roseTreeNN4 true true None (Some <% Prop %>)).
Print roseTreeNN4_ind_MC.
Print roseTreeNN5.
MetaCoq Run (create roseTreeNN5 true false).
MetaCoq Run (runElim roseTreeNN5 true true None (Some <% Prop %>)).
Print roseTreeNN5_ind_MC.
Print roseTreeNN6.
MetaCoq Run (create roseTreeNN6 true false).
MetaCoq Run (runElim roseTreeNN6 true true None (Some <% Prop %>)).
Print roseTreeNN6_ind_MC.
Print roseTreeNN7.
MetaCoq Run (create roseTreeNN7 true false).
MetaCoq Run (runElim roseTreeNN7 true true None (Some <% Prop %>)).
Print roseTreeNN7_ind_MC.
(* nested nested induction *)
Print roseTreeDN3.
MetaCoq Run (create roseTreeDN3 true false).
MetaCoq Run (runElim roseTreeDN3 true true None (Some <% Prop %>)).
Print roseTreeDN3_ind_MC.
Print roseTreeDN1.
MetaCoq Run (create roseTreeDN1 true false).
MetaCoq Run (runElim roseTreeDN1 true true None (Some <% Prop %>)).
Print roseTreeDN1_ind_MC.
Print roseTreeDN2.
MetaCoq Run (create roseTreeDN2 true false).
MetaCoq Run (runElim roseTreeDN2 true true None (Some <% Prop %>)).
Print roseTreeDN2_ind_MC.
Print roseTreeDN4.
MetaCoq Run (create roseTreeDN4 true false).
MetaCoq Run (runElim roseTreeDN4 true true None (Some <% Prop %>)).
Print roseTreeDN4_ind_MC.
Print roseTreeDN5.
MetaCoq Run (create roseTreeDN5 true false).
MetaCoq Run (runElim roseTreeDN5 true true None (Some <% Prop %>)).
Print roseTreeDN5_ind_MC.
Print roseTreeDN7.
MetaCoq Run (create roseTreeDN7 true false).
MetaCoq Run (runElim roseTreeDN7 true true None (Some <% Prop %>)).
Print roseTreeDN7_ind_MC.
Print roseTreeDN6.
MetaCoq Run (create roseTreeDN6 true false).
MetaCoq Run (runElim roseTreeDN6 true true None (Some <% Prop %>)).
Print roseTreeDN6_ind_MC.
Print term.
MetaCoq Run (create term true false).
MetaCoq Run (runElim term true true None (Some <% Prop %>)).
Print term_ind_MC.
(* MetaCoq Run (runElim is_list true true None (Some <>)). *)
(* Print is_list_ind_MC. *)
Print roseTreeO1.
(* MetaCoq Run (create roseTreeO1 true false). *)
(* MetaCoq Run (runElim roseTreeO1 true true None (Some <>)). *)
(* Print roseTreeO1_ind_MC. *)
Print roseTreeO2.
MetaCoq Run (create roseTreeO2 true false).
MetaCoq Run (runElim roseTreeO2 true true None (Some <% Prop %>)).
Print roseTreeO2_ind_MC.
Print roseTreeO3.
MetaCoq Run (create roseTreeO3 true false).
MetaCoq Run (runElim roseTreeO3 true true None (Some <% Prop %>)).
Print roseTreeO3_ind_MC.
Print roseTreeO4.
(* MetaCoq Run (create roseTreeO4 true false). *)
(* MetaCoq Run (runElim roseTreeO4 true true None (Some <>)). *)
(* Print roseTreeO4_ind_MC. *)
Print roseTreeO5.
(* MetaCoq Run (create roseTreeO5 true false). *)
(* MetaCoq Run (runElim roseTreeO5 true true None (Some <>)). *)
(* Print roseTreeO5_ind_MC. *)
Print roseTreeO6.
(* MetaCoq Run (create roseTreeO6 true false). *)
(* MetaCoq Run (runElim roseTreeO6 true true None (Some <>)). *)
(* Print roseTreeO6_ind_MC. *)
Print roseTreeO7.
MetaCoq Run (create roseTreeO7 true false).
MetaCoq Run (runElim roseTreeO7 true true None (Some <% Prop %>)).
Print roseTreeO7_ind_MC.
Print roseTreeO8.
MetaCoq Run (create roseTreeO8 true false).
MetaCoq Run (runElim roseTreeO8 true true None (Some <% Prop %>)).
Print roseTreeO8_ind_MC.
Print roseTreeO9.
MetaCoq Run (create roseTreeO9 true false).
MetaCoq Run (runElim roseTreeO9 true true None (Some <% Prop %>)).
Print roseTreeO9_ind_MC.
Print roseTreeO10.
MetaCoq Run (create roseTreeO10 true false).
MetaCoq Run (runElim roseTreeO10 true true None (Some <% Prop %>)).
Print roseTreeO10_ind_MC.
Print roseTreeO11.
MetaCoq Run (create roseTreeO11 true false).
MetaCoq Run (runElim roseTreeO11 true true None (Some <% Prop %>)).
Print roseTreeO11_ind_MC.
Print roseTreeO13.
MetaCoq Run (create roseTreeO13 true false).
(* MetaCoq Run (runElim roseTreeO13 true true None (Some <>)). *)
(* Print roseTreeO13_ind_MC. *)
Print roseTreeNN6.
Print foterm.
MetaCoq Run (create foterm true false).
MetaCoq Run (runElim foterm true true None (Some <% Prop %>)).
Print foterm_ind_MC.
Print form.
MetaCoq Run (create form true false).
MetaCoq Run (runElim form true true None (Some <% Prop %>)).
Print form_ind_MC.