()
| 6750 | let rec_block = mk_id("Bool.rec.block"); |
| 6751 | |
| 6752 | // Rebuild recursor type and rule-body domains exactly as `bool_env` |
| 6753 | // does, then swap which Var is returned in each rule. |
| 6754 | let motive_ty = pi(cnst("Bool", &[]), AE::sort(param(0))); |
| 6755 | let minor_true = app(var(0), cnst("Bool.true", &[])); |
| 6756 | let minor_false = app(var(1), cnst("Bool.false", &[])); |
| 6757 | let major_ty = cnst("Bool", &[]); |
| 6758 | let ret = app(var(3), var(0)); |
| 6759 | let rec_ty = pi( |
| 6760 | motive_ty.clone(), |
| 6761 | pi(minor_true.clone(), pi(minor_false.clone(), pi(major_ty, ret))), |
| 6762 | ); |
| 6763 | |
| 6764 | // SWAPPED rules: rule 0 returns `h_false` (var 0), rule 1 returns `h_true` (var 1). |
| 6765 | // Canonical: rule 0 returns `h_true` (var 1), rule 1 returns `h_false` (var 0). |
| 6766 | let motive_dom = motive_ty; |
| 6767 | let h_true_dom = minor_true; |
| 6768 | let h_false_dom = minor_false; |
| 6769 | let rule_true_rhs_swapped = lam( |
| 6770 | motive_dom.clone(), |
| 6771 | lam( |
| 6772 | h_true_dom.clone(), |
| 6773 | lam(h_false_dom.clone(), var(0)), // wrong: should be var(1) |
| 6774 | ), |
| 6775 | ); |
| 6776 | let rule_false_rhs_swapped = lam( |
| 6777 | motive_dom, |
| 6778 | lam( |
| 6779 | h_true_dom, |
| 6780 | lam(h_false_dom, var(1)), // wrong: should be var(0) |
| 6781 | ), |
| 6782 | ); |
| 6783 | |
| 6784 | env.insert( |
| 6785 | mk_id("Bool.rec"), |
| 6786 | KConst::Recr { |
| 6787 | name: (), |
| 6788 | level_params: (), |
| 6789 | k: false, |
| 6790 | is_unsafe: false, |
| 6791 | lvls: 1, |
| 6792 | params: 0, |
| 6793 | indices: 0, |
| 6794 | motives: 1, |
| 6795 | minors: 2, |
| 6796 | block: rec_block, |
| 6797 | member_idx: 0, |
| 6798 | ty: rec_ty, |
| 6799 | rules: vec![ |
| 6800 | super::super::constant::RecRule { |
| 6801 | ctor: (), |
| 6802 | fields: 0, |
| 6803 | rhs: rule_true_rhs_swapped, |
| 6804 | }, |
| 6805 | super::super::constant::RecRule { |
| 6806 | ctor: (), |
| 6807 | fields: 0, |
| 6808 | rhs: rule_false_rhs_swapped, |
| 6809 | }, |
nothing calls this directly
no test coverage detected