Skip to content

Instantly share code, notes, and snippets.

@semorrison
Created April 29, 2024 23:34
Show Gist options
  • Save semorrison/6d47ac209a9d68dd582d9ae447ae3332 to your computer and use it in GitHub Desktop.
Save semorrison/6d47ac209a9d68dd582d9ae447ae3332 to your computer and use it in GitHub Desktop.
[init]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : obj of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : obj of
Bool.false →
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
case x_9 : obj of
Simps.ParsedProjectionData.mk →
let x_12 : obj := proj[0] x_9;
let x_13 : obj := proj[1] x_9;
let x_14 : obj := proj[2] x_9;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
let x_18 : obj := proj[5] x_9;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : obj of
Bool.false →
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : u8 := Lean.Syntax.isMissing x_13;
case x_25 : obj of
Bool.false →
let x_26 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_26[6, 0] : u8 := x_15;
sset x_26[6, 1] : u8 := x_16;
sset x_26[6, 2] : u8 := x_19;
let x_30 : obj := Array.uset ◾ x_11 x_6 x_26 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_30;
ret x_31
Bool.true →
let x_32 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_32[6, 0] : u8 := x_15;
sset x_32[6, 1] : u8 := x_16;
sset x_32[6, 2] : u8 := x_19;
let x_36 : obj := Array.uset ◾ x_11 x_6 x_32 ◾;
let x_37 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_36;
ret x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_29 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_30 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_29;
ret x_30
Bool.true →
let x_31 : u8 := 1;
let x_32 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_32[6, 0] : u8 := x_31;
sset x_32[6, 1] : u8 := x_14;
sset x_32[6, 2] : u8 := x_17;
let x_36 : obj := Array.uset ◾ x_9 x_4 x_32 ◾;
let x_37 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_36;
ret x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 0;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_29 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_30 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_29;
ret x_30
Bool.true →
let x_31 : u8 := 0;
let x_32 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_32[6, 0] : u8 := x_31;
sset x_32[6, 1] : u8 := x_14;
sset x_32[6, 2] : u8 := x_17;
let x_36 : obj := Array.uset ◾ x_9 x_4 x_32 ◾;
let x_37 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_36;
ret x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_14;
sset x_25[6, 1] : u8 := x_24;
sset x_25[6, 2] : u8 := x_17;
let x_29 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_30 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_29;
ret x_30
Bool.true →
let x_31 : u8 := 1;
let x_32 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_32[6, 0] : u8 := x_14;
sset x_32[6, 1] : u8 := x_31;
sset x_32[6, 2] : u8 := x_17;
let x_36 : obj := Array.uset ◾ x_9 x_4 x_32 ◾;
let x_37 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_36;
ret x_37
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_1[List.cons] x_9 x_4;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_0[Lean.MessageData.ofFormat] x_9;
let x_11 : obj := ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_6 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_7 : obj := ctor_3[Std.Format.text] x_6;
let x_8 : obj := ctor_0[Lean.MessageData.ofFormat] x_7;
let x_9 : obj := ctor_1[List.cons] x_8 x_2;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_9;
ret x_10
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
case x_4 : obj of
Simps.ParsedProjectionData.mk →
let x_6 : obj := proj[0] x_4;
let x_7 : obj := proj[1] x_4;
let x_8 : obj := proj[2] x_4;
let x_9 : obj := proj[3] x_4;
let x_10 : u8 := sproj[6, 0] x_4;
let x_11 : u8 := sproj[6, 1] x_4;
let x_12 : obj := proj[4] x_4;
let x_13 : obj := proj[5] x_4;
let x_14 : u8 := sproj[6, 2] x_4;
let x_15 : obj := Lean.MessageData.ofName x_6;
let x_16 : obj := Lean.MessageData.ofSyntax x_7;
let x_17 : obj := Lean.MessageData.ofName x_8;
let x_18 : obj := Lean.MessageData.ofSyntax x_9;
let x_19 : obj := Array.toList ◾ x_13;
let x_20 : obj := ctor_0[List.nil];
let x_21 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_19 x_20;
let x_22 : obj := Lean.MessageData.ofList x_21;
block_23 (x_26 : obj) :=
let x_27 : obj := ctor_3[Std.Format.text] x_26;
let x_28 : obj := ctor_0[Lean.MessageData.ofFormat] x_27;
block_29 (x_32 : obj) :=
let x_33 : obj := ctor_3[Std.Format.text] x_32;
let x_34 : obj := ctor_0[Lean.MessageData.ofFormat] x_33;
case x_12 : obj of
Option.none →
case x_14 : obj of
Bool.false →
let x_35 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_36 : obj := ctor_1[List.cons] x_22 x_35;
let x_37 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_38 : obj := ctor_1[List.cons] x_37 x_36;
let x_39 : obj := ctor_1[List.cons] x_34 x_38;
let x_40 : obj := ctor_1[List.cons] x_28 x_39;
let x_41 : obj := ctor_1[List.cons] x_18 x_40;
let x_42 : obj := ctor_1[List.cons] x_17 x_41;
let x_43 : obj := ctor_1[List.cons] x_16 x_42;
let x_44 : obj := ctor_1[List.cons] x_15 x_43;
let x_45 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_46 : obj := Lean.MessageData.joinSep x_44 x_45;
let x_47 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_48 : obj := ctor_7[Lean.MessageData.compose] x_47 x_46;
let x_49 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_50 : obj := ctor_7[Lean.MessageData.compose] x_48 x_49;
let x_51 : obj := 1;
let x_52 : obj := ctor_5[Lean.MessageData.nest] x_51 x_50;
let x_53 : obj := ctor_6[Lean.MessageData.group] x_52;
let x_54 : obj := ctor_1[List.cons] x_53 x_2;
let x_55 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_54;
ret x_55
Bool.true →
let x_56 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_57 : obj := ctor_1[List.cons] x_22 x_56;
let x_58 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_59 : obj := ctor_1[List.cons] x_58 x_57;
let x_60 : obj := ctor_1[List.cons] x_34 x_59;
let x_61 : obj := ctor_1[List.cons] x_28 x_60;
let x_62 : obj := ctor_1[List.cons] x_18 x_61;
let x_63 : obj := ctor_1[List.cons] x_17 x_62;
let x_64 : obj := ctor_1[List.cons] x_16 x_63;
let x_65 : obj := ctor_1[List.cons] x_15 x_64;
let x_66 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_67 : obj := Lean.MessageData.joinSep x_65 x_66;
let x_68 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_69 : obj := ctor_7[Lean.MessageData.compose] x_68 x_67;
let x_70 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_71 : obj := ctor_7[Lean.MessageData.compose] x_69 x_70;
let x_72 : obj := 1;
let x_73 : obj := ctor_5[Lean.MessageData.nest] x_72 x_71;
let x_74 : obj := ctor_6[Lean.MessageData.group] x_73;
let x_75 : obj := ctor_1[List.cons] x_74 x_2;
let x_76 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_75;
ret x_76
Option.some →
let x_77 : obj := proj[0] x_12;
let x_78 : obj := Lean.MessageData.ofExpr x_77;
case x_14 : obj of
Bool.false →
let x_79 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_80 : obj := ctor_1[List.cons] x_22 x_79;
let x_81 : obj := ctor_1[List.cons] x_78 x_80;
let x_82 : obj := ctor_1[List.cons] x_34 x_81;
let x_83 : obj := ctor_1[List.cons] x_28 x_82;
let x_84 : obj := ctor_1[List.cons] x_18 x_83;
let x_85 : obj := ctor_1[List.cons] x_17 x_84;
let x_86 : obj := ctor_1[List.cons] x_16 x_85;
let x_87 : obj := ctor_1[List.cons] x_15 x_86;
let x_88 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_89 : obj := Lean.MessageData.joinSep x_87 x_88;
let x_90 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_91 : obj := ctor_7[Lean.MessageData.compose] x_90 x_89;
let x_92 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_93 : obj := ctor_7[Lean.MessageData.compose] x_91 x_92;
let x_94 : obj := 1;
let x_95 : obj := ctor_5[Lean.MessageData.nest] x_94 x_93;
let x_96 : obj := ctor_6[Lean.MessageData.group] x_95;
let x_97 : obj := ctor_1[List.cons] x_96 x_2;
let x_98 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_97;
ret x_98
Bool.true →
let x_99 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_100 : obj := ctor_1[List.cons] x_22 x_99;
let x_101 : obj := ctor_1[List.cons] x_78 x_100;
let x_102 : obj := ctor_1[List.cons] x_34 x_101;
let x_103 : obj := ctor_1[List.cons] x_28 x_102;
let x_104 : obj := ctor_1[List.cons] x_18 x_103;
let x_105 : obj := ctor_1[List.cons] x_17 x_104;
let x_106 : obj := ctor_1[List.cons] x_16 x_105;
let x_107 : obj := ctor_1[List.cons] x_15 x_106;
let x_108 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_109 : obj := Lean.MessageData.joinSep x_107 x_108;
let x_110 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_111 : obj := ctor_7[Lean.MessageData.compose] x_110 x_109;
let x_112 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_113 : obj := ctor_7[Lean.MessageData.compose] x_111 x_112;
let x_114 : obj := 1;
let x_115 : obj := ctor_5[Lean.MessageData.nest] x_114 x_113;
let x_116 : obj := ctor_6[Lean.MessageData.group] x_115;
let x_117 : obj := ctor_1[List.cons] x_116 x_2;
let x_118 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_117;
ret x_118;
case x_11 : obj of
Bool.false →
let x_30 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_29 x_30
Bool.true →
let x_31 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_29 x_31;
case x_10 : obj of
Bool.false →
let x_24 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_23 x_24
Bool.true →
let x_25 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_23 x_25
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : obj of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
let x_10 : obj := proj[1] x_6;
let x_11 : obj := proj[2] x_6;
let x_12 : obj := proj[3] x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
let x_15 : usize := 0;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
case x_17 : obj of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_26 : obj := Array.push ◾ x_4 x_22;
let x_27 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_26;
ret x_27
Bool.true →
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
let x_29 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_28;
ret x_29
Simps.ProjectionRule.add →
let x_30 : obj := proj[0] x_6;
let x_31 : obj := proj[1] x_6;
let x_32 : obj := Array.size ◾ x_4;
let x_33 : usize := USize.ofNat x_32;
let x_34 : usize := 0;
let x_35 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_33 x_34 x_4;
let x_36 : u8 := Array.contains._at.Lean.findField?._spec_1 x_35 x_30;
case x_36 : obj of
Bool.false →
let x_37 : obj := ctor_0[Option.none];
let x_38 : u8 := 1;
let x_39 : u8 := 0;
let x_40 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_41 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_30 x_31 x_30 x_31 x_37 x_40;
sset x_41[6, 0] : u8 := x_38;
sset x_41[6, 1] : u8 := x_39;
sset x_41[6, 2] : u8 := x_39;
let x_45 : obj := Array.push ◾ x_4 x_41;
let x_46 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_45;
ret x_46
Bool.true →
let x_47 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_30 x_31 x_33 x_34 x_4;
let x_48 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_47;
ret x_48
Simps.ProjectionRule.erase →
let x_49 : obj := proj[0] x_6;
let x_50 : obj := proj[1] x_6;
let x_51 : obj := Array.size ◾ x_4;
let x_52 : usize := USize.ofNat x_51;
let x_53 : usize := 0;
let x_54 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_52 x_53 x_4;
let x_55 : u8 := Array.contains._at.Lean.findField?._spec_1 x_54 x_49;
case x_55 : obj of
Bool.false →
let x_56 : obj := ctor_0[Option.none];
let x_57 : u8 := 0;
let x_58 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_59 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_49 x_50 x_49 x_50 x_56 x_58;
sset x_59[6, 0] : u8 := x_57;
sset x_59[6, 1] : u8 := x_57;
sset x_59[6, 2] : u8 := x_57;
let x_63 : obj := Array.push ◾ x_4 x_59;
let x_64 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_63;
ret x_64
Bool.true →
let x_65 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_49 x_50 x_52 x_53 x_4;
let x_66 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_65;
ret x_66
Simps.ProjectionRule.prefix →
let x_67 : obj := proj[0] x_6;
let x_68 : obj := proj[1] x_6;
let x_69 : obj := Array.size ◾ x_4;
let x_70 : usize := USize.ofNat x_69;
let x_71 : usize := 0;
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_70 x_71 x_4;
let x_73 : u8 := Array.contains._at.Lean.findField?._spec_1 x_72 x_67;
case x_73 : obj of
Bool.false →
let x_74 : obj := ctor_0[Option.none];
let x_75 : u8 := 1;
let x_76 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_77 : u8 := 0;
let x_78 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_67 x_68 x_67 x_68 x_74 x_76;
sset x_78[6, 0] : u8 := x_75;
sset x_78[6, 1] : u8 := x_75;
sset x_78[6, 2] : u8 := x_77;
let x_82 : obj := Array.push ◾ x_4 x_78;
let x_83 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_82;
ret x_83
Bool.true →
let x_84 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_67 x_68 x_70 x_71 x_4;
let x_85 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_84;
ret x_85
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
let x_8 : usize := 0;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : obj of
Bool.false →
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
case x_14 : obj of
EStateM.Result.ok →
let x_15 : obj := proj[1] x_14;
let x_16 : obj := ctor_0[EStateM.Result.ok] x_1 x_15;
ret x_16
EStateM.Result.error →
let x_17 : obj := proj[0] x_14;
let x_18 : obj := proj[1] x_14;
let x_19 : obj := ctor_1[EStateM.Result.error] x_17 x_18;
ret x_19
Bool.true →
let x_20 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_20
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_11 (x_31 : obj) (x_32 : u8) (x_33 : obj) :=
case x_32 : obj of
Bool.false →
let x_34 : obj := ctor_0[PUnit.unit];
let x_35 : obj := Simps.applyProjectionRules._lambda_2 x_31 x_34 x_3 x_4 x_33;
ret x_35
Bool.true →
let x_36 : obj := Array.toList ◾ x_31;
let x_37 : obj := ctor_0[List.nil];
let x_38 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_36 x_37;
let x_39 : obj := Lean.MessageData.ofList x_38;
let x_40 : obj := Simps.applyProjectionRules._closed_2;
let x_41 : obj := ctor_7[Lean.MessageData.compose] x_40 x_39;
let x_42 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_43 : obj := ctor_7[Lean.MessageData.compose] x_41 x_42;
let x_44 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_43 x_3 x_4 x_33;
case x_44 : obj of
EStateM.Result.ok →
let x_45 : obj := proj[0] x_44;
let x_46 : obj := proj[1] x_44;
let x_47 : obj := Simps.applyProjectionRules._lambda_2 x_31 x_45 x_3 x_4 x_46;
ret x_47
EStateM.Result.error →
let x_48 : obj := proj[0] x_44;
let x_49 : obj := proj[1] x_44;
let x_50 : obj := ctor_1[EStateM.Result.error] x_48 x_49;
ret x_50;
case x_8 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_12 : obj := proj[0] x_10;
let x_13 : obj := proj[1] x_10;
jmp block_11 x_1 x_12 x_13
EStateM.Result.error →
let x_14 : obj := proj[0] x_10;
let x_15 : obj := proj[1] x_10;
let x_16 : obj := ctor_1[EStateM.Result.error] x_14 x_15;
ret x_16
Bool.true →
let x_17 : u8 := Nat.decLe x_6 x_6;
case x_17 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_18 : obj := proj[0] x_10;
let x_19 : obj := proj[1] x_10;
jmp block_11 x_1 x_18 x_19
EStateM.Result.error →
let x_20 : obj := proj[0] x_10;
let x_21 : obj := proj[1] x_10;
let x_22 : obj := ctor_1[EStateM.Result.error] x_20 x_21;
ret x_22
Bool.true →
case x_10 : obj of
EStateM.Result.ok →
let x_23 : obj := proj[0] x_10;
let x_24 : obj := proj[1] x_10;
let x_25 : usize := 0;
let x_26 : usize := USize.ofNat x_6;
let x_27 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_25 x_26 x_1;
jmp block_11 x_27 x_23 x_24
EStateM.Result.error →
let x_28 : obj := proj[0] x_10;
let x_29 : obj := proj[1] x_10;
let x_30 : obj := ctor_1[EStateM.Result.error] x_28 x_29;
ret x_30
[elim_dead_branches]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : obj of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : obj of
Bool.false →
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
case x_9 : obj of
Simps.ParsedProjectionData.mk →
let x_12 : obj := proj[0] x_9;
let x_13 : obj := proj[1] x_9;
let x_14 : obj := proj[2] x_9;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
let x_18 : obj := proj[5] x_9;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : obj of
Bool.false →
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : u8 := Lean.Syntax.isMissing x_13;
case x_25 : obj of
Bool.false →
let x_26 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_26[6, 0] : u8 := x_15;
sset x_26[6, 1] : u8 := x_16;
sset x_26[6, 2] : u8 := x_19;
let x_30 : obj := Array.uset ◾ x_11 x_6 x_26 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_30;
ret x_31
Bool.true →
let x_32 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_32[6, 0] : u8 := x_15;
sset x_32[6, 1] : u8 := x_16;
sset x_32[6, 2] : u8 := x_19;
let x_36 : obj := Array.uset ◾ x_11 x_6 x_32 ◾;
let x_37 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_36;
ret x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_29 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_30 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_29;
ret x_30
Bool.true →
let x_31 : u8 := 1;
let x_32 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_32[6, 0] : u8 := x_31;
sset x_32[6, 1] : u8 := x_14;
sset x_32[6, 2] : u8 := x_17;
let x_36 : obj := Array.uset ◾ x_9 x_4 x_32 ◾;
let x_37 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_36;
ret x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 0;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_29 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_30 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_29;
ret x_30
Bool.true →
let x_31 : u8 := 0;
let x_32 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_32[6, 0] : u8 := x_31;
sset x_32[6, 1] : u8 := x_14;
sset x_32[6, 2] : u8 := x_17;
let x_36 : obj := Array.uset ◾ x_9 x_4 x_32 ◾;
let x_37 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_36;
ret x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_14;
sset x_25[6, 1] : u8 := x_24;
sset x_25[6, 2] : u8 := x_17;
let x_29 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_30 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_29;
ret x_30
Bool.true →
let x_31 : u8 := 1;
let x_32 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_32[6, 0] : u8 := x_14;
sset x_32[6, 1] : u8 := x_31;
sset x_32[6, 2] : u8 := x_17;
let x_36 : obj := Array.uset ◾ x_9 x_4 x_32 ◾;
let x_37 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_36;
ret x_37
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_1[List.cons] x_9 x_4;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_0[Lean.MessageData.ofFormat] x_9;
let x_11 : obj := ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_6 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_7 : obj := ctor_3[Std.Format.text] x_6;
let x_8 : obj := ctor_0[Lean.MessageData.ofFormat] x_7;
let x_9 : obj := ctor_1[List.cons] x_8 x_2;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_9;
ret x_10
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
case x_4 : obj of
Simps.ParsedProjectionData.mk →
let x_6 : obj := proj[0] x_4;
let x_7 : obj := proj[1] x_4;
let x_8 : obj := proj[2] x_4;
let x_9 : obj := proj[3] x_4;
let x_10 : u8 := sproj[6, 0] x_4;
let x_11 : u8 := sproj[6, 1] x_4;
let x_12 : obj := proj[4] x_4;
let x_13 : obj := proj[5] x_4;
let x_14 : u8 := sproj[6, 2] x_4;
let x_15 : obj := Lean.MessageData.ofName x_6;
let x_16 : obj := Lean.MessageData.ofSyntax x_7;
let x_17 : obj := Lean.MessageData.ofName x_8;
let x_18 : obj := Lean.MessageData.ofSyntax x_9;
let x_19 : obj := Array.toList ◾ x_13;
let x_20 : obj := ctor_0[List.nil];
let x_21 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_19 x_20;
let x_22 : obj := Lean.MessageData.ofList x_21;
block_23 (x_26 : obj) :=
let x_27 : obj := ctor_3[Std.Format.text] x_26;
let x_28 : obj := ctor_0[Lean.MessageData.ofFormat] x_27;
block_29 (x_32 : obj) :=
let x_33 : obj := ctor_3[Std.Format.text] x_32;
let x_34 : obj := ctor_0[Lean.MessageData.ofFormat] x_33;
case x_12 : obj of
Option.none →
case x_14 : obj of
Bool.false →
let x_35 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_36 : obj := ctor_1[List.cons] x_22 x_35;
let x_37 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_38 : obj := ctor_1[List.cons] x_37 x_36;
let x_39 : obj := ctor_1[List.cons] x_34 x_38;
let x_40 : obj := ctor_1[List.cons] x_28 x_39;
let x_41 : obj := ctor_1[List.cons] x_18 x_40;
let x_42 : obj := ctor_1[List.cons] x_17 x_41;
let x_43 : obj := ctor_1[List.cons] x_16 x_42;
let x_44 : obj := ctor_1[List.cons] x_15 x_43;
let x_45 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_46 : obj := Lean.MessageData.joinSep x_44 x_45;
let x_47 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_48 : obj := ctor_7[Lean.MessageData.compose] x_47 x_46;
let x_49 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_50 : obj := ctor_7[Lean.MessageData.compose] x_48 x_49;
let x_51 : obj := 1;
let x_52 : obj := ctor_5[Lean.MessageData.nest] x_51 x_50;
let x_53 : obj := ctor_6[Lean.MessageData.group] x_52;
let x_54 : obj := ctor_1[List.cons] x_53 x_2;
let x_55 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_54;
ret x_55
Bool.true →
let x_56 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_57 : obj := ctor_1[List.cons] x_22 x_56;
let x_58 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_59 : obj := ctor_1[List.cons] x_58 x_57;
let x_60 : obj := ctor_1[List.cons] x_34 x_59;
let x_61 : obj := ctor_1[List.cons] x_28 x_60;
let x_62 : obj := ctor_1[List.cons] x_18 x_61;
let x_63 : obj := ctor_1[List.cons] x_17 x_62;
let x_64 : obj := ctor_1[List.cons] x_16 x_63;
let x_65 : obj := ctor_1[List.cons] x_15 x_64;
let x_66 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_67 : obj := Lean.MessageData.joinSep x_65 x_66;
let x_68 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_69 : obj := ctor_7[Lean.MessageData.compose] x_68 x_67;
let x_70 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_71 : obj := ctor_7[Lean.MessageData.compose] x_69 x_70;
let x_72 : obj := 1;
let x_73 : obj := ctor_5[Lean.MessageData.nest] x_72 x_71;
let x_74 : obj := ctor_6[Lean.MessageData.group] x_73;
let x_75 : obj := ctor_1[List.cons] x_74 x_2;
let x_76 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_75;
ret x_76
Option.some →
let x_77 : obj := proj[0] x_12;
let x_78 : obj := Lean.MessageData.ofExpr x_77;
case x_14 : obj of
Bool.false →
let x_79 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_80 : obj := ctor_1[List.cons] x_22 x_79;
let x_81 : obj := ctor_1[List.cons] x_78 x_80;
let x_82 : obj := ctor_1[List.cons] x_34 x_81;
let x_83 : obj := ctor_1[List.cons] x_28 x_82;
let x_84 : obj := ctor_1[List.cons] x_18 x_83;
let x_85 : obj := ctor_1[List.cons] x_17 x_84;
let x_86 : obj := ctor_1[List.cons] x_16 x_85;
let x_87 : obj := ctor_1[List.cons] x_15 x_86;
let x_88 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_89 : obj := Lean.MessageData.joinSep x_87 x_88;
let x_90 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_91 : obj := ctor_7[Lean.MessageData.compose] x_90 x_89;
let x_92 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_93 : obj := ctor_7[Lean.MessageData.compose] x_91 x_92;
let x_94 : obj := 1;
let x_95 : obj := ctor_5[Lean.MessageData.nest] x_94 x_93;
let x_96 : obj := ctor_6[Lean.MessageData.group] x_95;
let x_97 : obj := ctor_1[List.cons] x_96 x_2;
let x_98 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_97;
ret x_98
Bool.true →
let x_99 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_100 : obj := ctor_1[List.cons] x_22 x_99;
let x_101 : obj := ctor_1[List.cons] x_78 x_100;
let x_102 : obj := ctor_1[List.cons] x_34 x_101;
let x_103 : obj := ctor_1[List.cons] x_28 x_102;
let x_104 : obj := ctor_1[List.cons] x_18 x_103;
let x_105 : obj := ctor_1[List.cons] x_17 x_104;
let x_106 : obj := ctor_1[List.cons] x_16 x_105;
let x_107 : obj := ctor_1[List.cons] x_15 x_106;
let x_108 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_109 : obj := Lean.MessageData.joinSep x_107 x_108;
let x_110 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_111 : obj := ctor_7[Lean.MessageData.compose] x_110 x_109;
let x_112 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_113 : obj := ctor_7[Lean.MessageData.compose] x_111 x_112;
let x_114 : obj := 1;
let x_115 : obj := ctor_5[Lean.MessageData.nest] x_114 x_113;
let x_116 : obj := ctor_6[Lean.MessageData.group] x_115;
let x_117 : obj := ctor_1[List.cons] x_116 x_2;
let x_118 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_117;
ret x_118;
case x_11 : obj of
Bool.false →
let x_30 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_29 x_30
Bool.true →
let x_31 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_29 x_31;
case x_10 : obj of
Bool.false →
let x_24 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_23 x_24
Bool.true →
let x_25 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_23 x_25
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : obj of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
let x_10 : obj := proj[1] x_6;
let x_11 : obj := proj[2] x_6;
let x_12 : obj := proj[3] x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
let x_15 : usize := 0;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
case x_17 : obj of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_26 : obj := Array.push ◾ x_4 x_22;
let x_27 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_26;
ret x_27
Bool.true →
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
let x_29 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_28;
ret x_29
Simps.ProjectionRule.add →
let x_30 : obj := proj[0] x_6;
let x_31 : obj := proj[1] x_6;
let x_32 : obj := Array.size ◾ x_4;
let x_33 : usize := USize.ofNat x_32;
let x_34 : usize := 0;
let x_35 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_33 x_34 x_4;
let x_36 : u8 := Array.contains._at.Lean.findField?._spec_1 x_35 x_30;
case x_36 : obj of
Bool.false →
let x_37 : obj := ctor_0[Option.none];
let x_38 : u8 := 1;
let x_39 : u8 := 0;
let x_40 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_41 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_30 x_31 x_30 x_31 x_37 x_40;
sset x_41[6, 0] : u8 := x_38;
sset x_41[6, 1] : u8 := x_39;
sset x_41[6, 2] : u8 := x_39;
let x_45 : obj := Array.push ◾ x_4 x_41;
let x_46 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_45;
ret x_46
Bool.true →
let x_47 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_30 x_31 x_33 x_34 x_4;
let x_48 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_47;
ret x_48
Simps.ProjectionRule.erase →
let x_49 : obj := proj[0] x_6;
let x_50 : obj := proj[1] x_6;
let x_51 : obj := Array.size ◾ x_4;
let x_52 : usize := USize.ofNat x_51;
let x_53 : usize := 0;
let x_54 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_52 x_53 x_4;
let x_55 : u8 := Array.contains._at.Lean.findField?._spec_1 x_54 x_49;
case x_55 : obj of
Bool.false →
let x_56 : obj := ctor_0[Option.none];
let x_57 : u8 := 0;
let x_58 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_59 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_49 x_50 x_49 x_50 x_56 x_58;
sset x_59[6, 0] : u8 := x_57;
sset x_59[6, 1] : u8 := x_57;
sset x_59[6, 2] : u8 := x_57;
let x_63 : obj := Array.push ◾ x_4 x_59;
let x_64 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_63;
ret x_64
Bool.true →
let x_65 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_49 x_50 x_52 x_53 x_4;
let x_66 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_65;
ret x_66
Simps.ProjectionRule.prefix →
let x_67 : obj := proj[0] x_6;
let x_68 : obj := proj[1] x_6;
let x_69 : obj := Array.size ◾ x_4;
let x_70 : usize := USize.ofNat x_69;
let x_71 : usize := 0;
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_70 x_71 x_4;
let x_73 : u8 := Array.contains._at.Lean.findField?._spec_1 x_72 x_67;
case x_73 : obj of
Bool.false →
let x_74 : obj := ctor_0[Option.none];
let x_75 : u8 := 1;
let x_76 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_77 : u8 := 0;
let x_78 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_67 x_68 x_67 x_68 x_74 x_76;
sset x_78[6, 0] : u8 := x_75;
sset x_78[6, 1] : u8 := x_75;
sset x_78[6, 2] : u8 := x_77;
let x_82 : obj := Array.push ◾ x_4 x_78;
let x_83 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_82;
ret x_83
Bool.true →
let x_84 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_67 x_68 x_70 x_71 x_4;
let x_85 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_84;
ret x_85
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
let x_8 : usize := 0;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : obj of
Bool.false →
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
case x_14 : obj of
EStateM.Result.ok →
EStateM.Result.error →
let x_17 : obj := proj[0] x_14;
let x_18 : obj := proj[1] x_14;
let x_19 : obj := ctor_1[EStateM.Result.error] x_17 x_18;
ret x_19
Bool.true →
let x_20 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_20
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_11 (x_31 : obj) (x_32 : u8) (x_33 : obj) :=
case x_32 : obj of
Bool.false →
let x_34 : obj := ctor_0[PUnit.unit];
let x_35 : obj := Simps.applyProjectionRules._lambda_2 x_31 x_34 x_3 x_4 x_33;
ret x_35
Bool.true →
let x_36 : obj := Array.toList ◾ x_31;
let x_37 : obj := ctor_0[List.nil];
let x_38 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_36 x_37;
let x_39 : obj := Lean.MessageData.ofList x_38;
let x_40 : obj := Simps.applyProjectionRules._closed_2;
let x_41 : obj := ctor_7[Lean.MessageData.compose] x_40 x_39;
let x_42 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_43 : obj := ctor_7[Lean.MessageData.compose] x_41 x_42;
let x_44 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_43 x_3 x_4 x_33;
case x_44 : obj of
EStateM.Result.ok →
let x_45 : obj := proj[0] x_44;
let x_46 : obj := proj[1] x_44;
let x_47 : obj := Simps.applyProjectionRules._lambda_2 x_31 x_45 x_3 x_4 x_46;
ret x_47
EStateM.Result.error →
⊥;
case x_8 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_12 : obj := proj[0] x_10;
let x_13 : obj := proj[1] x_10;
jmp block_11 x_1 x_12 x_13
EStateM.Result.error →
Bool.true →
let x_17 : u8 := Nat.decLe x_6 x_6;
case x_17 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_18 : obj := proj[0] x_10;
let x_19 : obj := proj[1] x_10;
jmp block_11 x_1 x_18 x_19
EStateM.Result.error →
Bool.true →
case x_10 : obj of
EStateM.Result.ok →
let x_23 : obj := proj[0] x_10;
let x_24 : obj := proj[1] x_10;
let x_25 : usize := 0;
let x_26 : usize := USize.ofNat x_6;
let x_27 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_25 x_26 x_1;
jmp block_11 x_27 x_23 x_24
EStateM.Result.error →
[push_proj]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : obj of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : obj of
Bool.false →
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
case x_9 : obj of
Simps.ParsedProjectionData.mk →
let x_12 : obj := proj[0] x_9;
let x_13 : obj := proj[1] x_9;
let x_14 : obj := proj[2] x_9;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
let x_18 : obj := proj[5] x_9;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : obj of
Bool.false →
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : u8 := Lean.Syntax.isMissing x_13;
case x_25 : obj of
Bool.false →
let x_26 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_26[6, 0] : u8 := x_15;
sset x_26[6, 1] : u8 := x_16;
sset x_26[6, 2] : u8 := x_19;
let x_27 : obj := Array.uset ◾ x_11 x_6 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_27;
ret x_28
Bool.true →
let x_29 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_29[6, 0] : u8 := x_15;
sset x_29[6, 1] : u8 := x_16;
sset x_29[6, 2] : u8 := x_19;
let x_30 : obj := Array.uset ◾ x_11 x_6 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 1;
let x_29 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_28;
sset x_29[6, 1] : u8 := x_14;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 0;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 0;
let x_29 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_28;
sset x_29[6, 1] : u8 := x_14;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_14;
sset x_25[6, 1] : u8 := x_24;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 1;
let x_29 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_14;
sset x_29[6, 1] : u8 := x_28;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_30;
ret x_31
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_1[List.cons] x_9 x_4;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_0[Lean.MessageData.ofFormat] x_9;
let x_11 : obj := ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_6 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_7 : obj := ctor_3[Std.Format.text] x_6;
let x_8 : obj := ctor_0[Lean.MessageData.ofFormat] x_7;
let x_9 : obj := ctor_1[List.cons] x_8 x_2;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_9;
ret x_10
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
case x_4 : obj of
Simps.ParsedProjectionData.mk →
let x_5 : obj := proj[1] x_1;
let x_6 : obj := proj[0] x_4;
let x_7 : obj := proj[1] x_4;
let x_8 : obj := proj[2] x_4;
let x_9 : obj := proj[3] x_4;
let x_10 : u8 := sproj[6, 0] x_4;
let x_11 : u8 := sproj[6, 1] x_4;
let x_12 : obj := proj[4] x_4;
let x_13 : obj := proj[5] x_4;
let x_14 : u8 := sproj[6, 2] x_4;
let x_15 : obj := Lean.MessageData.ofName x_6;
let x_16 : obj := Lean.MessageData.ofSyntax x_7;
let x_17 : obj := Lean.MessageData.ofName x_8;
let x_18 : obj := Lean.MessageData.ofSyntax x_9;
let x_19 : obj := Array.toList ◾ x_13;
let x_20 : obj := ctor_0[List.nil];
let x_21 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_19 x_20;
let x_22 : obj := Lean.MessageData.ofList x_21;
block_116 (x_23 : obj) :=
let x_24 : obj := ctor_3[Std.Format.text] x_23;
let x_25 : obj := ctor_0[Lean.MessageData.ofFormat] x_24;
block_113 (x_26 : obj) :=
let x_27 : obj := ctor_3[Std.Format.text] x_26;
let x_28 : obj := ctor_0[Lean.MessageData.ofFormat] x_27;
case x_12 : obj of
Option.none →
case x_14 : obj of
Bool.false →
let x_29 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_30 : obj := ctor_1[List.cons] x_22 x_29;
let x_31 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_32 : obj := ctor_1[List.cons] x_31 x_30;
let x_33 : obj := ctor_1[List.cons] x_28 x_32;
let x_34 : obj := ctor_1[List.cons] x_25 x_33;
let x_35 : obj := ctor_1[List.cons] x_18 x_34;
let x_36 : obj := ctor_1[List.cons] x_17 x_35;
let x_37 : obj := ctor_1[List.cons] x_16 x_36;
let x_38 : obj := ctor_1[List.cons] x_15 x_37;
let x_39 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_40 : obj := Lean.MessageData.joinSep x_38 x_39;
let x_41 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_42 : obj := ctor_7[Lean.MessageData.compose] x_41 x_40;
let x_43 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_44 : obj := ctor_7[Lean.MessageData.compose] x_42 x_43;
let x_45 : obj := 1;
let x_46 : obj := ctor_5[Lean.MessageData.nest] x_45 x_44;
let x_47 : obj := ctor_6[Lean.MessageData.group] x_46;
let x_48 : obj := ctor_1[List.cons] x_47 x_2;
let x_49 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_48;
ret x_49
Bool.true →
let x_50 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_51 : obj := ctor_1[List.cons] x_22 x_50;
let x_52 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_53 : obj := ctor_1[List.cons] x_52 x_51;
let x_54 : obj := ctor_1[List.cons] x_28 x_53;
let x_55 : obj := ctor_1[List.cons] x_25 x_54;
let x_56 : obj := ctor_1[List.cons] x_18 x_55;
let x_57 : obj := ctor_1[List.cons] x_17 x_56;
let x_58 : obj := ctor_1[List.cons] x_16 x_57;
let x_59 : obj := ctor_1[List.cons] x_15 x_58;
let x_60 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_61 : obj := Lean.MessageData.joinSep x_59 x_60;
let x_62 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_63 : obj := ctor_7[Lean.MessageData.compose] x_62 x_61;
let x_64 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_65 : obj := ctor_7[Lean.MessageData.compose] x_63 x_64;
let x_66 : obj := 1;
let x_67 : obj := ctor_5[Lean.MessageData.nest] x_66 x_65;
let x_68 : obj := ctor_6[Lean.MessageData.group] x_67;
let x_69 : obj := ctor_1[List.cons] x_68 x_2;
let x_70 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_69;
ret x_70
Option.some →
let x_71 : obj := proj[0] x_12;
let x_72 : obj := Lean.MessageData.ofExpr x_71;
case x_14 : obj of
Bool.false →
let x_73 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_74 : obj := ctor_1[List.cons] x_22 x_73;
let x_75 : obj := ctor_1[List.cons] x_72 x_74;
let x_76 : obj := ctor_1[List.cons] x_28 x_75;
let x_77 : obj := ctor_1[List.cons] x_25 x_76;
let x_78 : obj := ctor_1[List.cons] x_18 x_77;
let x_79 : obj := ctor_1[List.cons] x_17 x_78;
let x_80 : obj := ctor_1[List.cons] x_16 x_79;
let x_81 : obj := ctor_1[List.cons] x_15 x_80;
let x_82 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_83 : obj := Lean.MessageData.joinSep x_81 x_82;
let x_84 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_85 : obj := ctor_7[Lean.MessageData.compose] x_84 x_83;
let x_86 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_87 : obj := ctor_7[Lean.MessageData.compose] x_85 x_86;
let x_88 : obj := 1;
let x_89 : obj := ctor_5[Lean.MessageData.nest] x_88 x_87;
let x_90 : obj := ctor_6[Lean.MessageData.group] x_89;
let x_91 : obj := ctor_1[List.cons] x_90 x_2;
let x_92 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_91;
ret x_92
Bool.true →
let x_93 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_94 : obj := ctor_1[List.cons] x_22 x_93;
let x_95 : obj := ctor_1[List.cons] x_72 x_94;
let x_96 : obj := ctor_1[List.cons] x_28 x_95;
let x_97 : obj := ctor_1[List.cons] x_25 x_96;
let x_98 : obj := ctor_1[List.cons] x_18 x_97;
let x_99 : obj := ctor_1[List.cons] x_17 x_98;
let x_100 : obj := ctor_1[List.cons] x_16 x_99;
let x_101 : obj := ctor_1[List.cons] x_15 x_100;
let x_102 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_103 : obj := Lean.MessageData.joinSep x_101 x_102;
let x_104 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_105 : obj := ctor_7[Lean.MessageData.compose] x_104 x_103;
let x_106 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_107 : obj := ctor_7[Lean.MessageData.compose] x_105 x_106;
let x_108 : obj := 1;
let x_109 : obj := ctor_5[Lean.MessageData.nest] x_108 x_107;
let x_110 : obj := ctor_6[Lean.MessageData.group] x_109;
let x_111 : obj := ctor_1[List.cons] x_110 x_2;
let x_112 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_111;
ret x_112;
case x_11 : obj of
Bool.false →
let x_114 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_113 x_114
Bool.true →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_113 x_115;
case x_10 : obj of
Bool.false →
let x_117 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_116 x_117
Bool.true →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_116 x_118
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : obj of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
let x_10 : obj := proj[1] x_6;
let x_11 : obj := proj[2] x_6;
let x_12 : obj := proj[3] x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
let x_15 : usize := 0;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
case x_17 : obj of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
let x_28 : obj := proj[1] x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
let x_31 : usize := 0;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
case x_33 : obj of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
let x_44 : obj := proj[1] x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
let x_47 : usize := 0;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
case x_49 : obj of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
let x_59 : obj := proj[1] x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
let x_62 : usize := 0;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
case x_64 : obj of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
let x_8 : usize := 0;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : obj of
Bool.false →
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
case x_14 : obj of
EStateM.Result.ok →
EStateM.Result.error →
let x_15 : obj := proj[0] x_14;
let x_16 : obj := proj[1] x_14;
let x_17 : obj := ctor_1[EStateM.Result.error] x_15 x_16;
ret x_17
Bool.true →
let x_18 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_18
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : obj of
Bool.false →
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
case x_24 : obj of
EStateM.Result.ok →
let x_25 : obj := proj[0] x_24;
let x_26 : obj := proj[1] x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
ret x_27
EStateM.Result.error →
⊥;
case x_8 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_29 : obj := proj[0] x_10;
let x_30 : obj := proj[1] x_10;
jmp block_28 x_1 x_29 x_30
EStateM.Result.error →
Bool.true →
let x_31 : u8 := Nat.decLe x_6 x_6;
case x_31 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_32 : obj := proj[0] x_10;
let x_33 : obj := proj[1] x_10;
jmp block_28 x_1 x_32 x_33
EStateM.Result.error →
Bool.true →
case x_10 : obj of
EStateM.Result.ok →
let x_34 : obj := proj[0] x_10;
let x_35 : obj := proj[1] x_10;
let x_36 : usize := 0;
let x_37 : usize := USize.ofNat x_6;
let x_38 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_36 x_37 x_1;
jmp block_28 x_38 x_34 x_35
EStateM.Result.error →
[reset_reuse]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : obj of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : obj of
Bool.false →
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
case x_9 : obj of
Simps.ParsedProjectionData.mk →
let x_12 : obj := proj[0] x_9;
let x_13 : obj := proj[1] x_9;
let x_14 : obj := proj[2] x_9;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
let x_18 : obj := proj[5] x_9;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : obj of
Bool.false →
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_33 : obj := reset[6] x_9;
let x_25 : u8 := Lean.Syntax.isMissing x_13;
case x_25 : obj of
Bool.false →
let x_26 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_26[6, 0] : u8 := x_15;
sset x_26[6, 1] : u8 := x_16;
sset x_26[6, 2] : u8 := x_19;
let x_27 : obj := Array.uset ◾ x_11 x_6 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_27;
ret x_28
Bool.true →
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_29[6, 0] : u8 := x_15;
sset x_29[6, 1] : u8 := x_16;
sset x_29[6, 2] : u8 := x_19;
let x_30 : obj := Array.uset ◾ x_11 x_6 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 1;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_28;
sset x_29[6, 1] : u8 := x_14;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 0;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 0;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_28;
sset x_29[6, 1] : u8 := x_14;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_14;
sset x_25[6, 1] : u8 := x_24;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 1;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_14;
sset x_29[6, 1] : u8 := x_28;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_30;
ret x_31
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_12 : obj := reset[2] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := reuse x_12 in ctor_1[List.cons] x_9 x_4;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_13 : obj := reset[2] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_0[Lean.MessageData.ofFormat] x_9;
let x_11 : obj := reuse x_13 in ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_11 : obj := reset[2] x_1;
let x_6 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_7 : obj := ctor_3[Std.Format.text] x_6;
let x_8 : obj := ctor_0[Lean.MessageData.ofFormat] x_7;
let x_9 : obj := reuse x_11 in ctor_1[List.cons] x_8 x_2;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_9;
ret x_10
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
case x_4 : obj of
Simps.ParsedProjectionData.mk →
let x_5 : obj := proj[1] x_1;
let x_121 : obj := reset[2] x_1;
let x_6 : obj := proj[0] x_4;
let x_7 : obj := proj[1] x_4;
let x_8 : obj := proj[2] x_4;
let x_9 : obj := proj[3] x_4;
let x_10 : u8 := sproj[6, 0] x_4;
let x_11 : u8 := sproj[6, 1] x_4;
let x_12 : obj := proj[4] x_4;
let x_13 : obj := proj[5] x_4;
let x_14 : u8 := sproj[6, 2] x_4;
let x_15 : obj := Lean.MessageData.ofName x_6;
let x_16 : obj := Lean.MessageData.ofSyntax x_7;
let x_17 : obj := Lean.MessageData.ofName x_8;
let x_18 : obj := Lean.MessageData.ofSyntax x_9;
let x_19 : obj := Array.toList ◾ x_13;
let x_20 : obj := ctor_0[List.nil];
let x_21 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_19 x_20;
let x_22 : obj := Lean.MessageData.ofList x_21;
block_116 (x_23 : obj) :=
let x_24 : obj := ctor_3[Std.Format.text] x_23;
let x_25 : obj := ctor_0[Lean.MessageData.ofFormat] x_24;
block_113 (x_26 : obj) :=
let x_27 : obj := ctor_3[Std.Format.text] x_26;
let x_28 : obj := ctor_0[Lean.MessageData.ofFormat] x_27;
case x_12 : obj of
Option.none →
case x_14 : obj of
Bool.false →
let x_29 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_30 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_29;
let x_31 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_32 : obj := ctor_1[List.cons] x_31 x_30;
let x_33 : obj := ctor_1[List.cons] x_28 x_32;
let x_34 : obj := ctor_1[List.cons] x_25 x_33;
let x_35 : obj := ctor_1[List.cons] x_18 x_34;
let x_36 : obj := ctor_1[List.cons] x_17 x_35;
let x_37 : obj := ctor_1[List.cons] x_16 x_36;
let x_38 : obj := ctor_1[List.cons] x_15 x_37;
let x_39 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_40 : obj := Lean.MessageData.joinSep x_38 x_39;
let x_41 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_42 : obj := ctor_7[Lean.MessageData.compose] x_41 x_40;
let x_43 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_44 : obj := ctor_7[Lean.MessageData.compose] x_42 x_43;
let x_45 : obj := 1;
let x_46 : obj := ctor_5[Lean.MessageData.nest] x_45 x_44;
let x_47 : obj := ctor_6[Lean.MessageData.group] x_46;
let x_48 : obj := ctor_1[List.cons] x_47 x_2;
let x_49 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_48;
ret x_49
Bool.true →
let x_50 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_51 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_50;
let x_52 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_53 : obj := ctor_1[List.cons] x_52 x_51;
let x_54 : obj := ctor_1[List.cons] x_28 x_53;
let x_55 : obj := ctor_1[List.cons] x_25 x_54;
let x_56 : obj := ctor_1[List.cons] x_18 x_55;
let x_57 : obj := ctor_1[List.cons] x_17 x_56;
let x_58 : obj := ctor_1[List.cons] x_16 x_57;
let x_59 : obj := ctor_1[List.cons] x_15 x_58;
let x_60 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_61 : obj := Lean.MessageData.joinSep x_59 x_60;
let x_62 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_63 : obj := ctor_7[Lean.MessageData.compose] x_62 x_61;
let x_64 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_65 : obj := ctor_7[Lean.MessageData.compose] x_63 x_64;
let x_66 : obj := 1;
let x_67 : obj := ctor_5[Lean.MessageData.nest] x_66 x_65;
let x_68 : obj := ctor_6[Lean.MessageData.group] x_67;
let x_69 : obj := ctor_1[List.cons] x_68 x_2;
let x_70 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_69;
ret x_70
Option.some →
let x_71 : obj := proj[0] x_12;
let x_72 : obj := Lean.MessageData.ofExpr x_71;
case x_14 : obj of
Bool.false →
let x_73 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_74 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_73;
let x_75 : obj := ctor_1[List.cons] x_72 x_74;
let x_76 : obj := ctor_1[List.cons] x_28 x_75;
let x_77 : obj := ctor_1[List.cons] x_25 x_76;
let x_78 : obj := ctor_1[List.cons] x_18 x_77;
let x_79 : obj := ctor_1[List.cons] x_17 x_78;
let x_80 : obj := ctor_1[List.cons] x_16 x_79;
let x_81 : obj := ctor_1[List.cons] x_15 x_80;
let x_82 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_83 : obj := Lean.MessageData.joinSep x_81 x_82;
let x_84 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_85 : obj := ctor_7[Lean.MessageData.compose] x_84 x_83;
let x_86 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_87 : obj := ctor_7[Lean.MessageData.compose] x_85 x_86;
let x_88 : obj := 1;
let x_89 : obj := ctor_5[Lean.MessageData.nest] x_88 x_87;
let x_90 : obj := ctor_6[Lean.MessageData.group] x_89;
let x_91 : obj := ctor_1[List.cons] x_90 x_2;
let x_92 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_91;
ret x_92
Bool.true →
let x_93 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_94 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_93;
let x_95 : obj := ctor_1[List.cons] x_72 x_94;
let x_96 : obj := ctor_1[List.cons] x_28 x_95;
let x_97 : obj := ctor_1[List.cons] x_25 x_96;
let x_98 : obj := ctor_1[List.cons] x_18 x_97;
let x_99 : obj := ctor_1[List.cons] x_17 x_98;
let x_100 : obj := ctor_1[List.cons] x_16 x_99;
let x_101 : obj := ctor_1[List.cons] x_15 x_100;
let x_102 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_103 : obj := Lean.MessageData.joinSep x_101 x_102;
let x_104 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_105 : obj := ctor_7[Lean.MessageData.compose] x_104 x_103;
let x_106 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_107 : obj := ctor_7[Lean.MessageData.compose] x_105 x_106;
let x_108 : obj := 1;
let x_109 : obj := ctor_5[Lean.MessageData.nest] x_108 x_107;
let x_110 : obj := ctor_6[Lean.MessageData.group] x_109;
let x_111 : obj := ctor_1[List.cons] x_110 x_2;
let x_112 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_111;
ret x_112;
case x_11 : obj of
Bool.false →
let x_114 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_113 x_114
Bool.true →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_113 x_115;
case x_10 : obj of
Bool.false →
let x_117 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_116 x_117
Bool.true →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_116 x_118
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : obj of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
let x_10 : obj := proj[1] x_6;
let x_11 : obj := proj[2] x_6;
let x_12 : obj := proj[3] x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
let x_15 : usize := 0;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
case x_17 : obj of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
let x_28 : obj := proj[1] x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
let x_31 : usize := 0;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
case x_33 : obj of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
let x_44 : obj := proj[1] x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
let x_47 : usize := 0;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
case x_49 : obj of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
let x_59 : obj := proj[1] x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
let x_62 : usize := 0;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
case x_64 : obj of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
let x_8 : usize := 0;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : obj of
Bool.false →
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
case x_14 : obj of
EStateM.Result.ok →
EStateM.Result.error →
let x_15 : obj := proj[0] x_14;
let x_16 : obj := proj[1] x_14;
let x_20 : obj := reset[2] x_14;
let x_17 : obj := reuse x_20 in ctor_1[EStateM.Result.error] x_15 x_16;
ret x_17
Bool.true →
let x_18 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_18
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : obj of
Bool.false →
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
case x_24 : obj of
EStateM.Result.ok →
let x_25 : obj := proj[0] x_24;
let x_26 : obj := proj[1] x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
ret x_27
EStateM.Result.error →
⊥;
case x_8 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_29 : obj := proj[0] x_10;
let x_30 : obj := proj[1] x_10;
jmp block_28 x_1 x_29 x_30
EStateM.Result.error →
Bool.true →
let x_31 : u8 := Nat.decLe x_6 x_6;
case x_31 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_32 : obj := proj[0] x_10;
let x_33 : obj := proj[1] x_10;
jmp block_28 x_1 x_32 x_33
EStateM.Result.error →
Bool.true →
case x_10 : obj of
EStateM.Result.ok →
let x_34 : obj := proj[0] x_10;
let x_35 : obj := proj[1] x_10;
let x_36 : usize := 0;
let x_37 : usize := USize.ofNat x_6;
let x_38 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_36 x_37 x_1;
jmp block_28 x_38 x_34 x_35
EStateM.Result.error →
[elim_dead]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : obj of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : obj of
Bool.false →
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
case x_9 : obj of
Simps.ParsedProjectionData.mk →
let x_12 : obj := proj[0] x_9;
let x_13 : obj := proj[1] x_9;
let x_14 : obj := proj[2] x_9;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
let x_18 : obj := proj[5] x_9;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : obj of
Bool.false →
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_33 : obj := reset[6] x_9;
let x_25 : u8 := Lean.Syntax.isMissing x_13;
case x_25 : obj of
Bool.false →
let x_26 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_26[6, 0] : u8 := x_15;
sset x_26[6, 1] : u8 := x_16;
sset x_26[6, 2] : u8 := x_19;
let x_27 : obj := Array.uset ◾ x_11 x_6 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_27;
ret x_28
Bool.true →
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_29[6, 0] : u8 := x_15;
sset x_29[6, 1] : u8 := x_16;
sset x_29[6, 2] : u8 := x_19;
let x_30 : obj := Array.uset ◾ x_11 x_6 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 1;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_28;
sset x_29[6, 1] : u8 := x_14;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 0;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 0;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_28;
sset x_29[6, 1] : u8 := x_14;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
case x_7 : obj of
Simps.ParsedProjectionData.mk →
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_14;
sset x_25[6, 1] : u8 := x_24;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 1;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_14;
sset x_29[6, 1] : u8 := x_28;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_30;
ret x_31
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_12 : obj := reset[2] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := reuse x_12 in ctor_1[List.cons] x_9 x_4;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_13 : obj := reset[2] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_0[Lean.MessageData.ofFormat] x_9;
let x_11 : obj := reuse x_13 in ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_11 : obj := reset[2] x_1;
let x_6 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_7 : obj := ctor_3[Std.Format.text] x_6;
let x_8 : obj := ctor_0[Lean.MessageData.ofFormat] x_7;
let x_9 : obj := reuse x_11 in ctor_1[List.cons] x_8 x_2;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_9;
ret x_10
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
case x_4 : obj of
Simps.ParsedProjectionData.mk →
let x_5 : obj := proj[1] x_1;
let x_121 : obj := reset[2] x_1;
let x_6 : obj := proj[0] x_4;
let x_7 : obj := proj[1] x_4;
let x_8 : obj := proj[2] x_4;
let x_9 : obj := proj[3] x_4;
let x_10 : u8 := sproj[6, 0] x_4;
let x_11 : u8 := sproj[6, 1] x_4;
let x_12 : obj := proj[4] x_4;
let x_13 : obj := proj[5] x_4;
let x_14 : u8 := sproj[6, 2] x_4;
let x_15 : obj := Lean.MessageData.ofName x_6;
let x_16 : obj := Lean.MessageData.ofSyntax x_7;
let x_17 : obj := Lean.MessageData.ofName x_8;
let x_18 : obj := Lean.MessageData.ofSyntax x_9;
let x_19 : obj := Array.toList ◾ x_13;
let x_20 : obj := ctor_0[List.nil];
let x_21 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_19 x_20;
let x_22 : obj := Lean.MessageData.ofList x_21;
block_116 (x_23 : obj) :=
let x_24 : obj := ctor_3[Std.Format.text] x_23;
let x_25 : obj := ctor_0[Lean.MessageData.ofFormat] x_24;
block_113 (x_26 : obj) :=
let x_27 : obj := ctor_3[Std.Format.text] x_26;
let x_28 : obj := ctor_0[Lean.MessageData.ofFormat] x_27;
case x_12 : obj of
Option.none →
case x_14 : obj of
Bool.false →
let x_29 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_30 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_29;
let x_31 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_32 : obj := ctor_1[List.cons] x_31 x_30;
let x_33 : obj := ctor_1[List.cons] x_28 x_32;
let x_34 : obj := ctor_1[List.cons] x_25 x_33;
let x_35 : obj := ctor_1[List.cons] x_18 x_34;
let x_36 : obj := ctor_1[List.cons] x_17 x_35;
let x_37 : obj := ctor_1[List.cons] x_16 x_36;
let x_38 : obj := ctor_1[List.cons] x_15 x_37;
let x_39 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_40 : obj := Lean.MessageData.joinSep x_38 x_39;
let x_41 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_42 : obj := ctor_7[Lean.MessageData.compose] x_41 x_40;
let x_43 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_44 : obj := ctor_7[Lean.MessageData.compose] x_42 x_43;
let x_45 : obj := 1;
let x_46 : obj := ctor_5[Lean.MessageData.nest] x_45 x_44;
let x_47 : obj := ctor_6[Lean.MessageData.group] x_46;
let x_48 : obj := ctor_1[List.cons] x_47 x_2;
let x_49 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_48;
ret x_49
Bool.true →
let x_50 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_51 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_50;
let x_52 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_53 : obj := ctor_1[List.cons] x_52 x_51;
let x_54 : obj := ctor_1[List.cons] x_28 x_53;
let x_55 : obj := ctor_1[List.cons] x_25 x_54;
let x_56 : obj := ctor_1[List.cons] x_18 x_55;
let x_57 : obj := ctor_1[List.cons] x_17 x_56;
let x_58 : obj := ctor_1[List.cons] x_16 x_57;
let x_59 : obj := ctor_1[List.cons] x_15 x_58;
let x_60 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_61 : obj := Lean.MessageData.joinSep x_59 x_60;
let x_62 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_63 : obj := ctor_7[Lean.MessageData.compose] x_62 x_61;
let x_64 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_65 : obj := ctor_7[Lean.MessageData.compose] x_63 x_64;
let x_66 : obj := 1;
let x_67 : obj := ctor_5[Lean.MessageData.nest] x_66 x_65;
let x_68 : obj := ctor_6[Lean.MessageData.group] x_67;
let x_69 : obj := ctor_1[List.cons] x_68 x_2;
let x_70 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_69;
ret x_70
Option.some →
let x_71 : obj := proj[0] x_12;
let x_72 : obj := Lean.MessageData.ofExpr x_71;
case x_14 : obj of
Bool.false →
let x_73 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_74 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_73;
let x_75 : obj := ctor_1[List.cons] x_72 x_74;
let x_76 : obj := ctor_1[List.cons] x_28 x_75;
let x_77 : obj := ctor_1[List.cons] x_25 x_76;
let x_78 : obj := ctor_1[List.cons] x_18 x_77;
let x_79 : obj := ctor_1[List.cons] x_17 x_78;
let x_80 : obj := ctor_1[List.cons] x_16 x_79;
let x_81 : obj := ctor_1[List.cons] x_15 x_80;
let x_82 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_83 : obj := Lean.MessageData.joinSep x_81 x_82;
let x_84 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_85 : obj := ctor_7[Lean.MessageData.compose] x_84 x_83;
let x_86 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_87 : obj := ctor_7[Lean.MessageData.compose] x_85 x_86;
let x_88 : obj := 1;
let x_89 : obj := ctor_5[Lean.MessageData.nest] x_88 x_87;
let x_90 : obj := ctor_6[Lean.MessageData.group] x_89;
let x_91 : obj := ctor_1[List.cons] x_90 x_2;
let x_92 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_91;
ret x_92
Bool.true →
let x_93 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_94 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_93;
let x_95 : obj := ctor_1[List.cons] x_72 x_94;
let x_96 : obj := ctor_1[List.cons] x_28 x_95;
let x_97 : obj := ctor_1[List.cons] x_25 x_96;
let x_98 : obj := ctor_1[List.cons] x_18 x_97;
let x_99 : obj := ctor_1[List.cons] x_17 x_98;
let x_100 : obj := ctor_1[List.cons] x_16 x_99;
let x_101 : obj := ctor_1[List.cons] x_15 x_100;
let x_102 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_103 : obj := Lean.MessageData.joinSep x_101 x_102;
let x_104 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_105 : obj := ctor_7[Lean.MessageData.compose] x_104 x_103;
let x_106 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_107 : obj := ctor_7[Lean.MessageData.compose] x_105 x_106;
let x_108 : obj := 1;
let x_109 : obj := ctor_5[Lean.MessageData.nest] x_108 x_107;
let x_110 : obj := ctor_6[Lean.MessageData.group] x_109;
let x_111 : obj := ctor_1[List.cons] x_110 x_2;
let x_112 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_111;
ret x_112;
case x_11 : obj of
Bool.false →
let x_114 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_113 x_114
Bool.true →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_113 x_115;
case x_10 : obj of
Bool.false →
let x_117 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_116 x_117
Bool.true →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_116 x_118
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : obj of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
let x_10 : obj := proj[1] x_6;
let x_11 : obj := proj[2] x_6;
let x_12 : obj := proj[3] x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
let x_15 : usize := 0;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
case x_17 : obj of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
let x_28 : obj := proj[1] x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
let x_31 : usize := 0;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
case x_33 : obj of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
let x_44 : obj := proj[1] x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
let x_47 : usize := 0;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
case x_49 : obj of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
let x_59 : obj := proj[1] x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
let x_62 : usize := 0;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
case x_64 : obj of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
let x_8 : usize := 0;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : obj of
Bool.false →
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
case x_14 : obj of
EStateM.Result.ok →
EStateM.Result.error →
let x_15 : obj := proj[0] x_14;
let x_16 : obj := proj[1] x_14;
let x_20 : obj := reset[2] x_14;
let x_17 : obj := reuse x_20 in ctor_1[EStateM.Result.error] x_15 x_16;
ret x_17
Bool.true →
let x_18 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_18
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : obj of
Bool.false →
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
case x_24 : obj of
EStateM.Result.ok →
let x_25 : obj := proj[0] x_24;
let x_26 : obj := proj[1] x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
ret x_27
EStateM.Result.error →
⊥;
case x_8 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_29 : obj := proj[0] x_10;
let x_30 : obj := proj[1] x_10;
jmp block_28 x_1 x_29 x_30
EStateM.Result.error →
Bool.true →
let x_31 : u8 := Nat.decLe x_6 x_6;
case x_31 : obj of
Bool.false →
case x_10 : obj of
EStateM.Result.ok →
let x_32 : obj := proj[0] x_10;
let x_33 : obj := proj[1] x_10;
jmp block_28 x_1 x_32 x_33
EStateM.Result.error →
Bool.true →
case x_10 : obj of
EStateM.Result.ok →
let x_34 : obj := proj[0] x_10;
let x_35 : obj := proj[1] x_10;
let x_36 : usize := 0;
let x_37 : usize := USize.ofNat x_6;
let x_38 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_36 x_37 x_1;
jmp block_28 x_38 x_34 x_35
EStateM.Result.error →
[simp_case]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : obj of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : obj of
Bool.false →
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
let x_12 : obj := proj[0] x_9;
let x_13 : obj := proj[1] x_9;
let x_14 : obj := proj[2] x_9;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
let x_18 : obj := proj[5] x_9;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : obj of
Bool.false →
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_33 : obj := reset[6] x_9;
let x_25 : u8 := Lean.Syntax.isMissing x_13;
case x_25 : obj of
Bool.false →
let x_26 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_26[6, 0] : u8 := x_15;
sset x_26[6, 1] : u8 := x_16;
sset x_26[6, 2] : u8 := x_19;
let x_27 : obj := Array.uset ◾ x_11 x_6 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_27;
ret x_28
Bool.true →
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_29[6, 0] : u8 := x_15;
sset x_29[6, 1] : u8 := x_16;
sset x_29[6, 2] : u8 := x_19;
let x_30 : obj := Array.uset ◾ x_11 x_6 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 1;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_28;
sset x_29[6, 1] : u8 := x_14;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 0;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_24;
sset x_25[6, 1] : u8 := x_14;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 0;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_28;
sset x_29[6, 1] : u8 := x_14;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_30;
ret x_31
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_33 : obj := reset[6] x_7;
let x_23 : u8 := Lean.Syntax.isMissing x_11;
case x_23 : obj of
Bool.false →
let x_24 : u8 := 1;
let x_25 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_25[6, 0] : u8 := x_14;
sset x_25[6, 1] : u8 := x_24;
sset x_25[6, 2] : u8 := x_17;
let x_26 : obj := Array.uset ◾ x_9 x_4 x_25 ◾;
let x_27 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_26;
ret x_27
Bool.true →
let x_28 : u8 := 1;
let x_29 : obj := reuse x_33 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_29[6, 0] : u8 := x_14;
sset x_29[6, 1] : u8 := x_28;
sset x_29[6, 2] : u8 := x_17;
let x_30 : obj := Array.uset ◾ x_9 x_4 x_29 ◾;
let x_31 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_30;
ret x_31
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_12 : obj := reset[2] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := reuse x_12 in ctor_1[List.cons] x_9 x_4;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_13 : obj := reset[2] x_3;
let x_8 : obj := app x_2 x_6;
let x_9 : obj := app x_1 x_8;
let x_10 : obj := ctor_0[Lean.MessageData.ofFormat] x_9;
let x_11 : obj := reuse x_13 in ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_11 : obj := reset[2] x_1;
let x_6 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_7 : obj := ctor_3[Std.Format.text] x_6;
let x_8 : obj := ctor_0[Lean.MessageData.ofFormat] x_7;
let x_9 : obj := reuse x_11 in ctor_1[List.cons] x_8 x_2;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_9;
ret x_10
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_121 : obj := reset[2] x_1;
let x_6 : obj := proj[0] x_4;
let x_7 : obj := proj[1] x_4;
let x_8 : obj := proj[2] x_4;
let x_9 : obj := proj[3] x_4;
let x_10 : u8 := sproj[6, 0] x_4;
let x_11 : u8 := sproj[6, 1] x_4;
let x_12 : obj := proj[4] x_4;
let x_13 : obj := proj[5] x_4;
let x_14 : u8 := sproj[6, 2] x_4;
let x_15 : obj := Lean.MessageData.ofName x_6;
let x_16 : obj := Lean.MessageData.ofSyntax x_7;
let x_17 : obj := Lean.MessageData.ofName x_8;
let x_18 : obj := Lean.MessageData.ofSyntax x_9;
let x_19 : obj := Array.toList ◾ x_13;
let x_20 : obj := ctor_0[List.nil];
let x_21 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_19 x_20;
let x_22 : obj := Lean.MessageData.ofList x_21;
block_116 (x_23 : obj) :=
let x_24 : obj := ctor_3[Std.Format.text] x_23;
let x_25 : obj := ctor_0[Lean.MessageData.ofFormat] x_24;
block_113 (x_26 : obj) :=
let x_27 : obj := ctor_3[Std.Format.text] x_26;
let x_28 : obj := ctor_0[Lean.MessageData.ofFormat] x_27;
case x_12 : obj of
Option.none →
case x_14 : obj of
Bool.false →
let x_29 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_30 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_29;
let x_31 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_32 : obj := ctor_1[List.cons] x_31 x_30;
let x_33 : obj := ctor_1[List.cons] x_28 x_32;
let x_34 : obj := ctor_1[List.cons] x_25 x_33;
let x_35 : obj := ctor_1[List.cons] x_18 x_34;
let x_36 : obj := ctor_1[List.cons] x_17 x_35;
let x_37 : obj := ctor_1[List.cons] x_16 x_36;
let x_38 : obj := ctor_1[List.cons] x_15 x_37;
let x_39 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_40 : obj := Lean.MessageData.joinSep x_38 x_39;
let x_41 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_42 : obj := ctor_7[Lean.MessageData.compose] x_41 x_40;
let x_43 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_44 : obj := ctor_7[Lean.MessageData.compose] x_42 x_43;
let x_45 : obj := 1;
let x_46 : obj := ctor_5[Lean.MessageData.nest] x_45 x_44;
let x_47 : obj := ctor_6[Lean.MessageData.group] x_46;
let x_48 : obj := ctor_1[List.cons] x_47 x_2;
let x_49 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_48;
ret x_49
Bool.true →
let x_50 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_51 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_50;
let x_52 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_53 : obj := ctor_1[List.cons] x_52 x_51;
let x_54 : obj := ctor_1[List.cons] x_28 x_53;
let x_55 : obj := ctor_1[List.cons] x_25 x_54;
let x_56 : obj := ctor_1[List.cons] x_18 x_55;
let x_57 : obj := ctor_1[List.cons] x_17 x_56;
let x_58 : obj := ctor_1[List.cons] x_16 x_57;
let x_59 : obj := ctor_1[List.cons] x_15 x_58;
let x_60 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_61 : obj := Lean.MessageData.joinSep x_59 x_60;
let x_62 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_63 : obj := ctor_7[Lean.MessageData.compose] x_62 x_61;
let x_64 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_65 : obj := ctor_7[Lean.MessageData.compose] x_63 x_64;
let x_66 : obj := 1;
let x_67 : obj := ctor_5[Lean.MessageData.nest] x_66 x_65;
let x_68 : obj := ctor_6[Lean.MessageData.group] x_67;
let x_69 : obj := ctor_1[List.cons] x_68 x_2;
let x_70 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_69;
ret x_70
Option.some →
let x_71 : obj := proj[0] x_12;
let x_72 : obj := Lean.MessageData.ofExpr x_71;
case x_14 : obj of
Bool.false →
let x_73 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_74 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_73;
let x_75 : obj := ctor_1[List.cons] x_72 x_74;
let x_76 : obj := ctor_1[List.cons] x_28 x_75;
let x_77 : obj := ctor_1[List.cons] x_25 x_76;
let x_78 : obj := ctor_1[List.cons] x_18 x_77;
let x_79 : obj := ctor_1[List.cons] x_17 x_78;
let x_80 : obj := ctor_1[List.cons] x_16 x_79;
let x_81 : obj := ctor_1[List.cons] x_15 x_80;
let x_82 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_83 : obj := Lean.MessageData.joinSep x_81 x_82;
let x_84 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_85 : obj := ctor_7[Lean.MessageData.compose] x_84 x_83;
let x_86 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_87 : obj := ctor_7[Lean.MessageData.compose] x_85 x_86;
let x_88 : obj := 1;
let x_89 : obj := ctor_5[Lean.MessageData.nest] x_88 x_87;
let x_90 : obj := ctor_6[Lean.MessageData.group] x_89;
let x_91 : obj := ctor_1[List.cons] x_90 x_2;
let x_92 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_91;
ret x_92
Bool.true →
let x_93 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_94 : obj := reuse x_121 in ctor_1[List.cons] x_22 x_93;
let x_95 : obj := ctor_1[List.cons] x_72 x_94;
let x_96 : obj := ctor_1[List.cons] x_28 x_95;
let x_97 : obj := ctor_1[List.cons] x_25 x_96;
let x_98 : obj := ctor_1[List.cons] x_18 x_97;
let x_99 : obj := ctor_1[List.cons] x_17 x_98;
let x_100 : obj := ctor_1[List.cons] x_16 x_99;
let x_101 : obj := ctor_1[List.cons] x_15 x_100;
let x_102 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_103 : obj := Lean.MessageData.joinSep x_101 x_102;
let x_104 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_105 : obj := ctor_7[Lean.MessageData.compose] x_104 x_103;
let x_106 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_107 : obj := ctor_7[Lean.MessageData.compose] x_105 x_106;
let x_108 : obj := 1;
let x_109 : obj := ctor_5[Lean.MessageData.nest] x_108 x_107;
let x_110 : obj := ctor_6[Lean.MessageData.group] x_109;
let x_111 : obj := ctor_1[List.cons] x_110 x_2;
let x_112 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_111;
ret x_112;
case x_11 : obj of
Bool.false →
let x_114 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_113 x_114
Bool.true →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_113 x_115;
case x_10 : obj of
Bool.false →
let x_117 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_116 x_117
Bool.true →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_116 x_118
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : obj of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
let x_10 : obj := proj[1] x_6;
let x_11 : obj := proj[2] x_6;
let x_12 : obj := proj[3] x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
let x_15 : usize := 0;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
case x_17 : obj of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
let x_28 : obj := proj[1] x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
let x_31 : usize := 0;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
case x_33 : obj of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
let x_44 : obj := proj[1] x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
let x_47 : usize := 0;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
case x_49 : obj of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
let x_59 : obj := proj[1] x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
let x_62 : usize := 0;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
case x_64 : obj of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
let x_8 : usize := 0;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : obj of
Bool.false →
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
let x_15 : obj := proj[0] x_14;
let x_16 : obj := proj[1] x_14;
let x_20 : obj := reset[2] x_14;
let x_17 : obj := reuse x_20 in ctor_1[EStateM.Result.error] x_15 x_16;
ret x_17
Bool.true →
let x_18 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_18
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : obj of
Bool.false →
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
let x_25 : obj := proj[0] x_24;
let x_26 : obj := proj[1] x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
ret x_27;
case x_8 : obj of
Bool.false →
let x_29 : obj := proj[0] x_10;
let x_30 : obj := proj[1] x_10;
jmp block_28 x_1 x_29 x_30
Bool.true →
let x_31 : u8 := Nat.decLe x_6 x_6;
case x_31 : obj of
Bool.false →
let x_32 : obj := proj[0] x_10;
let x_33 : obj := proj[1] x_10;
jmp block_28 x_1 x_32 x_33
Bool.true →
let x_34 : obj := proj[0] x_10;
let x_35 : obj := proj[1] x_10;
let x_36 : usize := 0;
let x_37 : usize := USize.ofNat x_6;
let x_38 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_36 x_37 x_1;
jmp block_28 x_38 x_34 x_35
[borrow]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : obj of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : @& obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : obj of
Bool.false →
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
let x_12 : obj := proj[0] x_9;
let x_13 : obj := proj[1] x_9;
let x_14 : obj := proj[2] x_9;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
let x_18 : obj := proj[5] x_9;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : obj of
Bool.false →
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : obj := reset[6] x_9;
let x_26 : u8 := Lean.Syntax.isMissing x_13;
case x_26 : obj of
Bool.false →
let x_27 : obj := reuse x_25 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_27[6, 0] : u8 := x_15;
sset x_27[6, 1] : u8 := x_16;
sset x_27[6, 2] : u8 := x_19;
let x_28 : obj := Array.uset ◾ x_11 x_6 x_27 ◾;
let x_29 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_28;
ret x_29
Bool.true →
let x_30 : obj := reuse x_25 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_30[6, 0] : u8 := x_15;
sset x_30[6, 1] : u8 := x_16;
sset x_30[6, 2] : u8 := x_19;
let x_31 : obj := Array.uset ◾ x_11 x_6 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : obj of
Bool.false →
let x_25 : u8 := 1;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_25;
sset x_26[6, 1] : u8 := x_14;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
let x_29 : u8 := 1;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_29;
sset x_30[6, 1] : u8 := x_14;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : obj of
Bool.false →
let x_25 : u8 := 0;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_25;
sset x_26[6, 1] : u8 := x_14;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
let x_29 : u8 := 0;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_29;
sset x_30[6, 1] : u8 := x_14;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : obj of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : obj of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : obj of
Bool.false →
let x_25 : u8 := 1;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_14;
sset x_26[6, 1] : u8 := x_25;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
let x_29 : u8 := 1;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_14;
sset x_30[6, 1] : u8 := x_29;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_31;
ret x_32
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := reset[2] x_3;
let x_9 : obj := app x_2 x_6;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := reuse x_8 in ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := reset[2] x_3;
let x_9 : obj := app x_2 x_6;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := ctor_0[Lean.MessageData.ofFormat] x_10;
let x_12 : obj := reuse x_8 in ctor_1[List.cons] x_11 x_4;
let x_13 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_12;
ret x_13
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_8 : obj := ctor_3[Std.Format.text] x_7;
let x_9 : obj := ctor_0[Lean.MessageData.ofFormat] x_8;
let x_10 : obj := reuse x_6 in ctor_1[List.cons] x_9 x_2;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := proj[0] x_4;
let x_8 : obj := proj[1] x_4;
let x_9 : obj := proj[2] x_4;
let x_10 : obj := proj[3] x_4;
let x_11 : u8 := sproj[6, 0] x_4;
let x_12 : u8 := sproj[6, 1] x_4;
let x_13 : obj := proj[4] x_4;
let x_14 : obj := proj[5] x_4;
let x_15 : u8 := sproj[6, 2] x_4;
let x_16 : obj := Lean.MessageData.ofName x_7;
let x_17 : obj := Lean.MessageData.ofSyntax x_8;
let x_18 : obj := Lean.MessageData.ofName x_9;
let x_19 : obj := Lean.MessageData.ofSyntax x_10;
let x_20 : obj := Array.toList ◾ x_14;
let x_21 : obj := ctor_0[List.nil];
let x_22 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_20 x_21;
let x_23 : obj := Lean.MessageData.ofList x_22;
block_117 (x_24 : obj) :=
let x_25 : obj := ctor_3[Std.Format.text] x_24;
let x_26 : obj := ctor_0[Lean.MessageData.ofFormat] x_25;
block_114 (x_27 : obj) :=
let x_28 : obj := ctor_3[Std.Format.text] x_27;
let x_29 : obj := ctor_0[Lean.MessageData.ofFormat] x_28;
case x_13 : obj of
Option.none →
case x_15 : obj of
Bool.false →
let x_30 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_31 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_30;
let x_32 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_33 : obj := ctor_1[List.cons] x_32 x_31;
let x_34 : obj := ctor_1[List.cons] x_29 x_33;
let x_35 : obj := ctor_1[List.cons] x_26 x_34;
let x_36 : obj := ctor_1[List.cons] x_19 x_35;
let x_37 : obj := ctor_1[List.cons] x_18 x_36;
let x_38 : obj := ctor_1[List.cons] x_17 x_37;
let x_39 : obj := ctor_1[List.cons] x_16 x_38;
let x_40 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_41 : obj := Lean.MessageData.joinSep x_39 x_40;
let x_42 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_43 : obj := ctor_7[Lean.MessageData.compose] x_42 x_41;
let x_44 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_45 : obj := ctor_7[Lean.MessageData.compose] x_43 x_44;
let x_46 : obj := 1;
let x_47 : obj := ctor_5[Lean.MessageData.nest] x_46 x_45;
let x_48 : obj := ctor_6[Lean.MessageData.group] x_47;
let x_49 : obj := ctor_1[List.cons] x_48 x_2;
let x_50 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_49;
ret x_50
Bool.true →
let x_51 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_52 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_51;
let x_53 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_54 : obj := ctor_1[List.cons] x_53 x_52;
let x_55 : obj := ctor_1[List.cons] x_29 x_54;
let x_56 : obj := ctor_1[List.cons] x_26 x_55;
let x_57 : obj := ctor_1[List.cons] x_19 x_56;
let x_58 : obj := ctor_1[List.cons] x_18 x_57;
let x_59 : obj := ctor_1[List.cons] x_17 x_58;
let x_60 : obj := ctor_1[List.cons] x_16 x_59;
let x_61 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_62 : obj := Lean.MessageData.joinSep x_60 x_61;
let x_63 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_64 : obj := ctor_7[Lean.MessageData.compose] x_63 x_62;
let x_65 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_66 : obj := ctor_7[Lean.MessageData.compose] x_64 x_65;
let x_67 : obj := 1;
let x_68 : obj := ctor_5[Lean.MessageData.nest] x_67 x_66;
let x_69 : obj := ctor_6[Lean.MessageData.group] x_68;
let x_70 : obj := ctor_1[List.cons] x_69 x_2;
let x_71 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_70;
ret x_71
Option.some →
let x_72 : obj := proj[0] x_13;
let x_73 : obj := Lean.MessageData.ofExpr x_72;
case x_15 : obj of
Bool.false →
let x_74 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_75 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_74;
let x_76 : obj := ctor_1[List.cons] x_73 x_75;
let x_77 : obj := ctor_1[List.cons] x_29 x_76;
let x_78 : obj := ctor_1[List.cons] x_26 x_77;
let x_79 : obj := ctor_1[List.cons] x_19 x_78;
let x_80 : obj := ctor_1[List.cons] x_18 x_79;
let x_81 : obj := ctor_1[List.cons] x_17 x_80;
let x_82 : obj := ctor_1[List.cons] x_16 x_81;
let x_83 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_84 : obj := Lean.MessageData.joinSep x_82 x_83;
let x_85 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_86 : obj := ctor_7[Lean.MessageData.compose] x_85 x_84;
let x_87 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_88 : obj := ctor_7[Lean.MessageData.compose] x_86 x_87;
let x_89 : obj := 1;
let x_90 : obj := ctor_5[Lean.MessageData.nest] x_89 x_88;
let x_91 : obj := ctor_6[Lean.MessageData.group] x_90;
let x_92 : obj := ctor_1[List.cons] x_91 x_2;
let x_93 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_92;
ret x_93
Bool.true →
let x_94 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_95 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_94;
let x_96 : obj := ctor_1[List.cons] x_73 x_95;
let x_97 : obj := ctor_1[List.cons] x_29 x_96;
let x_98 : obj := ctor_1[List.cons] x_26 x_97;
let x_99 : obj := ctor_1[List.cons] x_19 x_98;
let x_100 : obj := ctor_1[List.cons] x_18 x_99;
let x_101 : obj := ctor_1[List.cons] x_17 x_100;
let x_102 : obj := ctor_1[List.cons] x_16 x_101;
let x_103 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_104 : obj := Lean.MessageData.joinSep x_102 x_103;
let x_105 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_106 : obj := ctor_7[Lean.MessageData.compose] x_105 x_104;
let x_107 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_108 : obj := ctor_7[Lean.MessageData.compose] x_106 x_107;
let x_109 : obj := 1;
let x_110 : obj := ctor_5[Lean.MessageData.nest] x_109 x_108;
let x_111 : obj := ctor_6[Lean.MessageData.group] x_110;
let x_112 : obj := ctor_1[List.cons] x_111 x_2;
let x_113 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_112;
ret x_113;
case x_12 : obj of
Bool.false →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_114 x_115
Bool.true →
let x_116 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_114 x_116;
case x_11 : obj of
Bool.false →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_117 x_118
Bool.true →
let x_119 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_117 x_119
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : @& obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : obj of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
let x_10 : obj := proj[1] x_6;
let x_11 : obj := proj[2] x_6;
let x_12 : obj := proj[3] x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
let x_15 : usize := 0;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
case x_17 : obj of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
let x_28 : obj := proj[1] x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
let x_31 : usize := 0;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
case x_33 : obj of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
let x_44 : obj := proj[1] x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
let x_47 : usize := 0;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
case x_49 : obj of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
let x_59 : obj := proj[1] x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
let x_62 : usize := 0;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
case x_64 : obj of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
let x_8 : usize := 0;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : obj of
Bool.false →
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
let x_15 : obj := proj[0] x_14;
let x_16 : obj := proj[1] x_14;
let x_17 : obj := reset[2] x_14;
let x_18 : obj := reuse x_17 in ctor_1[EStateM.Result.error] x_15 x_16;
ret x_18
Bool.true →
let x_19 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_19
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : obj of
Bool.false →
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
let x_25 : obj := proj[0] x_24;
let x_26 : obj := proj[1] x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
ret x_27;
case x_8 : obj of
Bool.false →
let x_29 : obj := proj[0] x_10;
let x_30 : obj := proj[1] x_10;
jmp block_28 x_1 x_29 x_30
Bool.true →
let x_31 : u8 := Nat.decLe x_6 x_6;
case x_31 : obj of
Bool.false →
let x_32 : obj := proj[0] x_10;
let x_33 : obj := proj[1] x_10;
jmp block_28 x_1 x_32 x_33
Bool.true →
let x_34 : obj := proj[0] x_10;
let x_35 : obj := proj[1] x_10;
let x_36 : usize := 0;
let x_37 : usize := USize.ofNat x_6;
let x_38 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_36 x_37 x_1;
jmp block_28 x_38 x_34 x_35
[boxing]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : u8 of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : @& obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : u8 of
Bool.false →
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
let x_12 : obj := proj[0] x_9;
let x_13 : obj := proj[1] x_9;
let x_14 : obj := proj[2] x_9;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
let x_18 : obj := proj[5] x_9;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : u8 of
Bool.false →
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : obj := reset[6] x_9;
let x_26 : u8 := Lean.Syntax.isMissing x_13;
case x_26 : u8 of
Bool.false →
let x_27 : obj := reuse x_25 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_27[6, 0] : u8 := x_15;
sset x_27[6, 1] : u8 := x_16;
sset x_27[6, 2] : u8 := x_19;
let x_28 : obj := Array.uset ◾ x_11 x_6 x_27 ◾;
let x_29 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_28;
ret x_29
Bool.true →
let x_30 : obj := reuse x_25 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_30[6, 0] : u8 := x_15;
sset x_30[6, 1] : u8 := x_16;
sset x_30[6, 2] : u8 := x_19;
let x_31 : obj := Array.uset ◾ x_11 x_6 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : u8 of
Bool.false →
let x_25 : u8 := 1;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_25;
sset x_26[6, 1] : u8 := x_14;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
let x_29 : u8 := 1;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_29;
sset x_30[6, 1] : u8 := x_14;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : u8 of
Bool.false →
let x_25 : u8 := 0;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_25;
sset x_26[6, 1] : u8 := x_14;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
let x_29 : u8 := 0;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_29;
sset x_30[6, 1] : u8 := x_14;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
let x_11 : obj := proj[1] x_7;
let x_12 : obj := proj[2] x_7;
let x_13 : obj := proj[3] x_7;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
let x_16 : obj := proj[5] x_7;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : u8 of
Bool.false →
let x_25 : u8 := 1;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_14;
sset x_26[6, 1] : u8 := x_25;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
let x_29 : u8 := 1;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_14;
sset x_30[6, 1] : u8 := x_29;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_31;
ret x_32
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := reset[2] x_3;
let x_9 : obj := app x_2 x_6;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := reuse x_8 in ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : obj := reset[2] x_3;
let x_9 : obj := app x_2 x_6;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := ctor_0[Lean.MessageData.ofFormat] x_10;
let x_12 : obj := reuse x_8 in ctor_1[List.cons] x_11 x_4;
let x_13 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_12;
ret x_13
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_8 : obj := ctor_3[Std.Format.text] x_7;
let x_9 : obj := ctor_0[Lean.MessageData.ofFormat] x_8;
let x_10 : obj := reuse x_6 in ctor_1[List.cons] x_9 x_2;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := proj[0] x_4;
let x_8 : obj := proj[1] x_4;
let x_9 : obj := proj[2] x_4;
let x_10 : obj := proj[3] x_4;
let x_11 : u8 := sproj[6, 0] x_4;
let x_12 : u8 := sproj[6, 1] x_4;
let x_13 : obj := proj[4] x_4;
let x_14 : obj := proj[5] x_4;
let x_15 : u8 := sproj[6, 2] x_4;
let x_16 : obj := Lean.MessageData.ofName x_7;
let x_17 : obj := Lean.MessageData.ofSyntax x_8;
let x_18 : obj := Lean.MessageData.ofName x_9;
let x_19 : obj := Lean.MessageData.ofSyntax x_10;
let x_20 : obj := Array.toList ◾ x_14;
let x_21 : obj := ctor_0[List.nil];
let x_22 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_20 x_21;
let x_23 : obj := Lean.MessageData.ofList x_22;
block_117 (x_24 : obj) :=
let x_25 : obj := ctor_3[Std.Format.text] x_24;
let x_26 : obj := ctor_0[Lean.MessageData.ofFormat] x_25;
block_114 (x_27 : obj) :=
let x_28 : obj := ctor_3[Std.Format.text] x_27;
let x_29 : obj := ctor_0[Lean.MessageData.ofFormat] x_28;
case x_13 : obj of
Option.none →
case x_15 : u8 of
Bool.false →
let x_30 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_31 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_30;
let x_32 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_33 : obj := ctor_1[List.cons] x_32 x_31;
let x_34 : obj := ctor_1[List.cons] x_29 x_33;
let x_35 : obj := ctor_1[List.cons] x_26 x_34;
let x_36 : obj := ctor_1[List.cons] x_19 x_35;
let x_37 : obj := ctor_1[List.cons] x_18 x_36;
let x_38 : obj := ctor_1[List.cons] x_17 x_37;
let x_39 : obj := ctor_1[List.cons] x_16 x_38;
let x_40 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_41 : obj := Lean.MessageData.joinSep x_39 x_40;
let x_42 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_43 : obj := ctor_7[Lean.MessageData.compose] x_42 x_41;
let x_44 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_45 : obj := ctor_7[Lean.MessageData.compose] x_43 x_44;
let x_46 : obj := 1;
let x_47 : obj := ctor_5[Lean.MessageData.nest] x_46 x_45;
let x_48 : obj := ctor_6[Lean.MessageData.group] x_47;
let x_49 : obj := ctor_1[List.cons] x_48 x_2;
let x_50 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_49;
ret x_50
Bool.true →
let x_51 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_52 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_51;
let x_53 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_54 : obj := ctor_1[List.cons] x_53 x_52;
let x_55 : obj := ctor_1[List.cons] x_29 x_54;
let x_56 : obj := ctor_1[List.cons] x_26 x_55;
let x_57 : obj := ctor_1[List.cons] x_19 x_56;
let x_58 : obj := ctor_1[List.cons] x_18 x_57;
let x_59 : obj := ctor_1[List.cons] x_17 x_58;
let x_60 : obj := ctor_1[List.cons] x_16 x_59;
let x_61 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_62 : obj := Lean.MessageData.joinSep x_60 x_61;
let x_63 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_64 : obj := ctor_7[Lean.MessageData.compose] x_63 x_62;
let x_65 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_66 : obj := ctor_7[Lean.MessageData.compose] x_64 x_65;
let x_67 : obj := 1;
let x_68 : obj := ctor_5[Lean.MessageData.nest] x_67 x_66;
let x_69 : obj := ctor_6[Lean.MessageData.group] x_68;
let x_70 : obj := ctor_1[List.cons] x_69 x_2;
let x_71 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_70;
ret x_71
Option.some →
let x_72 : obj := proj[0] x_13;
let x_73 : obj := Lean.MessageData.ofExpr x_72;
case x_15 : u8 of
Bool.false →
let x_74 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_75 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_74;
let x_76 : obj := ctor_1[List.cons] x_73 x_75;
let x_77 : obj := ctor_1[List.cons] x_29 x_76;
let x_78 : obj := ctor_1[List.cons] x_26 x_77;
let x_79 : obj := ctor_1[List.cons] x_19 x_78;
let x_80 : obj := ctor_1[List.cons] x_18 x_79;
let x_81 : obj := ctor_1[List.cons] x_17 x_80;
let x_82 : obj := ctor_1[List.cons] x_16 x_81;
let x_83 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_84 : obj := Lean.MessageData.joinSep x_82 x_83;
let x_85 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_86 : obj := ctor_7[Lean.MessageData.compose] x_85 x_84;
let x_87 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_88 : obj := ctor_7[Lean.MessageData.compose] x_86 x_87;
let x_89 : obj := 1;
let x_90 : obj := ctor_5[Lean.MessageData.nest] x_89 x_88;
let x_91 : obj := ctor_6[Lean.MessageData.group] x_90;
let x_92 : obj := ctor_1[List.cons] x_91 x_2;
let x_93 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_92;
ret x_93
Bool.true →
let x_94 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_95 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_94;
let x_96 : obj := ctor_1[List.cons] x_73 x_95;
let x_97 : obj := ctor_1[List.cons] x_29 x_96;
let x_98 : obj := ctor_1[List.cons] x_26 x_97;
let x_99 : obj := ctor_1[List.cons] x_19 x_98;
let x_100 : obj := ctor_1[List.cons] x_18 x_99;
let x_101 : obj := ctor_1[List.cons] x_17 x_100;
let x_102 : obj := ctor_1[List.cons] x_16 x_101;
let x_103 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_104 : obj := Lean.MessageData.joinSep x_102 x_103;
let x_105 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_106 : obj := ctor_7[Lean.MessageData.compose] x_105 x_104;
let x_107 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_108 : obj := ctor_7[Lean.MessageData.compose] x_106 x_107;
let x_109 : obj := 1;
let x_110 : obj := ctor_5[Lean.MessageData.nest] x_109 x_108;
let x_111 : obj := ctor_6[Lean.MessageData.group] x_110;
let x_112 : obj := ctor_1[List.cons] x_111 x_2;
let x_113 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_112;
ret x_113;
case x_12 : u8 of
Bool.false →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_114 x_115
Bool.true →
let x_116 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_114 x_116;
case x_11 : u8 of
Bool.false →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_117 x_118
Bool.true →
let x_119 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_117 x_119
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : @& obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : u8 of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
let x_10 : obj := proj[1] x_6;
let x_11 : obj := proj[2] x_6;
let x_12 : obj := proj[3] x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
let x_15 : usize := 0;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
case x_17 : u8 of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
let x_28 : obj := proj[1] x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
let x_31 : usize := 0;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
case x_33 : u8 of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
let x_44 : obj := proj[1] x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
let x_47 : usize := 0;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
case x_49 : u8 of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
let x_59 : obj := proj[1] x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
let x_62 : usize := 0;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
case x_64 : u8 of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq._boxed;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
let x_8 : usize := 0;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : u8 of
Bool.false →
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
let x_15 : obj := proj[0] x_14;
let x_16 : obj := proj[1] x_14;
let x_17 : obj := reset[2] x_14;
let x_18 : obj := reuse x_17 in ctor_1[EStateM.Result.error] x_15 x_16;
ret x_18
Bool.true →
let x_19 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_19
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : u8 of
Bool.false →
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
let x_25 : obj := proj[0] x_24;
let x_26 : obj := proj[1] x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
ret x_27;
case x_8 : u8 of
Bool.false →
let x_29 : obj := proj[0] x_10;
let x_30 : obj := proj[1] x_10;
let x_39 : u8 := unbox x_29;
jmp block_28 x_1 x_39 x_30
Bool.true →
let x_31 : u8 := Nat.decLe x_6 x_6;
case x_31 : u8 of
Bool.false →
let x_32 : obj := proj[0] x_10;
let x_33 : obj := proj[1] x_10;
let x_40 : u8 := unbox x_32;
jmp block_28 x_1 x_40 x_33
Bool.true →
let x_34 : obj := proj[0] x_10;
let x_35 : obj := proj[1] x_10;
let x_36 : usize := 0;
let x_37 : usize := USize.ofNat x_6;
let x_38 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_36 x_37 x_1;
let x_41 : u8 := unbox x_34;
jmp block_28 x_38 x_41 x_35
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) : obj :=
let x_4 : usize := unbox x_1;
let x_5 : usize := unbox x_2;
let x_6 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_4 x_5 x_3;
ret x_6
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) (x_6 : obj) (x_7 : obj) : obj :=
let x_8 : usize := unbox x_5;
let x_9 : usize := unbox x_6;
let x_10 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_8 x_9 x_7;
ret x_10
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
let x_7 : usize := unbox x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_6 x_7 x_5;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
let x_7 : usize := unbox x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_6 x_7 x_5;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
let x_7 : usize := unbox x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_6 x_7 x_5;
ret x_8
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
let x_5 : usize := unbox x_2;
let x_6 : usize := unbox x_3;
let x_7 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_5 x_6 x_4;
ret x_7
def Simps.applyProjectionRules._lambda_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_1 x_1 x_2 x_3 x_4 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_2 x_1 x_2 x_3 x_4 x_5;
ret x_6
def Simps.applyProjectionRules._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules x_1 x_2 x_3 x_4 x_5;
ret x_6
[rc]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : u8 of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
inc x_8;
dec x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : @& obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : u8 of
Bool.false →
dec x_4;
dec x_3;
dec x_2;
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
let x_12 : obj := proj[0] x_9;
inc x_12;
let x_13 : obj := proj[1] x_9;
inc x_13;
let x_14 : obj := proj[2] x_9;
inc x_14;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
inc x_17;
let x_18 : obj := proj[5] x_9;
inc x_18;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
dec x_14;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : u8 of
Bool.false →
dec x_18;
dec x_17;
dec x_13;
dec x_12;
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : obj := reset[6] x_9;
let x_26 : u8 := Lean.Syntax.isMissing x_13;
case x_26 : u8 of
Bool.false →
inc x_4;
inc x_3;
let x_27 : obj := reuse x_25 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_27[6, 0] : u8 := x_15;
sset x_27[6, 1] : u8 := x_16;
sset x_27[6, 2] : u8 := x_19;
let x_28 : obj := Array.uset ◾ x_11 x_6 x_27 ◾;
let x_29 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_28;
ret x_29
Bool.true →
dec x_13;
inc x_4;
inc x_3;
inc x_2;
let x_30 : obj := reuse x_25 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_30[6, 0] : u8 := x_15;
sset x_30[6, 1] : u8 := x_16;
sset x_30[6, 2] : u8 := x_19;
let x_31 : obj := Array.uset ◾ x_11 x_6 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : u8 of
Bool.false →
let x_25 : u8 := 1;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_25;
sset x_26[6, 1] : u8 := x_14;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
dec x_11;
let x_29 : u8 := 1;
inc x_2;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_29;
sset x_30[6, 1] : u8 := x_14;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : u8 of
Bool.false →
let x_25 : u8 := 0;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_25;
sset x_26[6, 1] : u8 := x_14;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
dec x_11;
let x_29 : u8 := 0;
inc x_2;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_29;
sset x_30[6, 1] : u8 := x_14;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_31;
ret x_32
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : obj := reset[6] x_7;
let x_24 : u8 := Lean.Syntax.isMissing x_11;
case x_24 : u8 of
Bool.false →
let x_25 : u8 := 1;
let x_26 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_26[6, 0] : u8 := x_14;
sset x_26[6, 1] : u8 := x_25;
sset x_26[6, 2] : u8 := x_17;
let x_27 : obj := Array.uset ◾ x_9 x_4 x_26 ◾;
let x_28 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_27;
ret x_28
Bool.true →
dec x_11;
let x_29 : u8 := 1;
inc x_2;
let x_30 : obj := reuse x_23 in ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_30[6, 0] : u8 := x_14;
sset x_30[6, 1] : u8 := x_29;
sset x_30[6, 2] : u8 := x_17;
let x_31 : obj := Array.uset ◾ x_9 x_4 x_30 ◾;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_31;
ret x_32
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
dec x_2;
dec x_1;
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
inc x_6;
let x_7 : obj := proj[1] x_3;
inc x_7;
let x_8 : obj := reset[2] x_3;
inc x_2;
let x_9 : obj := app x_2 x_6;
inc x_1;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := reuse x_8 in ctor_1[List.cons] x_10 x_4;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_11;
ret x_12
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
dec x_2;
dec x_1;
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
inc x_6;
let x_7 : obj := proj[1] x_3;
inc x_7;
let x_8 : obj := reset[2] x_3;
inc x_2;
let x_9 : obj := app x_2 x_6;
inc x_1;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := ctor_0[Lean.MessageData.ofFormat] x_10;
let x_12 : obj := reuse x_8 in ctor_1[List.cons] x_11 x_4;
let x_13 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_12;
ret x_13
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
inc x_4;
let x_5 : obj := proj[1] x_1;
inc x_5;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_8 : obj := ctor_3[Std.Format.text] x_7;
let x_9 : obj := ctor_0[Lean.MessageData.ofFormat] x_8;
let x_10 : obj := reuse x_6 in ctor_1[List.cons] x_9 x_2;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_10;
ret x_11
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
inc x_4;
let x_5 : obj := proj[1] x_1;
inc x_5;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := proj[0] x_4;
inc x_7;
let x_8 : obj := proj[1] x_4;
inc x_8;
let x_9 : obj := proj[2] x_4;
inc x_9;
let x_10 : obj := proj[3] x_4;
inc x_10;
let x_11 : u8 := sproj[6, 0] x_4;
let x_12 : u8 := sproj[6, 1] x_4;
let x_13 : obj := proj[4] x_4;
inc x_13;
let x_14 : obj := proj[5] x_4;
inc x_14;
let x_15 : u8 := sproj[6, 2] x_4;
dec x_4;
let x_16 : obj := Lean.MessageData.ofName x_7;
let x_17 : obj := Lean.MessageData.ofSyntax x_8;
let x_18 : obj := Lean.MessageData.ofName x_9;
let x_19 : obj := Lean.MessageData.ofSyntax x_10;
let x_20 : obj := Array.toList ◾ x_14;
let x_21 : obj := ctor_0[List.nil];
let x_22 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_20 x_21;
let x_23 : obj := Lean.MessageData.ofList x_22;
dec x_22;
block_117 (x_24 : obj) :=
let x_25 : obj := ctor_3[Std.Format.text] x_24;
let x_26 : obj := ctor_0[Lean.MessageData.ofFormat] x_25;
block_114 (x_27 : obj) :=
let x_28 : obj := ctor_3[Std.Format.text] x_27;
let x_29 : obj := ctor_0[Lean.MessageData.ofFormat] x_28;
case x_13 : obj of
Option.none →
case x_15 : u8 of
Bool.false →
let x_30 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_31 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_30;
let x_32 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_33 : obj := ctor_1[List.cons] x_32 x_31;
let x_34 : obj := ctor_1[List.cons] x_29 x_33;
let x_35 : obj := ctor_1[List.cons] x_26 x_34;
let x_36 : obj := ctor_1[List.cons] x_19 x_35;
let x_37 : obj := ctor_1[List.cons] x_18 x_36;
let x_38 : obj := ctor_1[List.cons] x_17 x_37;
let x_39 : obj := ctor_1[List.cons] x_16 x_38;
let x_40 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_41 : obj := Lean.MessageData.joinSep x_39 x_40;
dec x_39;
let x_42 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_43 : obj := ctor_7[Lean.MessageData.compose] x_42 x_41;
let x_44 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_45 : obj := ctor_7[Lean.MessageData.compose] x_43 x_44;
let x_46 : obj := 1;
let x_47 : obj := ctor_5[Lean.MessageData.nest] x_46 x_45;
let x_48 : obj := ctor_6[Lean.MessageData.group] x_47;
let x_49 : obj := ctor_1[List.cons] x_48 x_2;
let x_50 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_49;
ret x_50
Bool.true →
let x_51 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_52 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_51;
let x_53 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_54 : obj := ctor_1[List.cons] x_53 x_52;
let x_55 : obj := ctor_1[List.cons] x_29 x_54;
let x_56 : obj := ctor_1[List.cons] x_26 x_55;
let x_57 : obj := ctor_1[List.cons] x_19 x_56;
let x_58 : obj := ctor_1[List.cons] x_18 x_57;
let x_59 : obj := ctor_1[List.cons] x_17 x_58;
let x_60 : obj := ctor_1[List.cons] x_16 x_59;
let x_61 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_62 : obj := Lean.MessageData.joinSep x_60 x_61;
dec x_60;
let x_63 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_64 : obj := ctor_7[Lean.MessageData.compose] x_63 x_62;
let x_65 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_66 : obj := ctor_7[Lean.MessageData.compose] x_64 x_65;
let x_67 : obj := 1;
let x_68 : obj := ctor_5[Lean.MessageData.nest] x_67 x_66;
let x_69 : obj := ctor_6[Lean.MessageData.group] x_68;
let x_70 : obj := ctor_1[List.cons] x_69 x_2;
let x_71 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_70;
ret x_71
Option.some →
let x_72 : obj := proj[0] x_13;
inc x_72;
dec x_13;
let x_73 : obj := Lean.MessageData.ofExpr x_72;
case x_15 : u8 of
Bool.false →
let x_74 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_75 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_74;
let x_76 : obj := ctor_1[List.cons] x_73 x_75;
let x_77 : obj := ctor_1[List.cons] x_29 x_76;
let x_78 : obj := ctor_1[List.cons] x_26 x_77;
let x_79 : obj := ctor_1[List.cons] x_19 x_78;
let x_80 : obj := ctor_1[List.cons] x_18 x_79;
let x_81 : obj := ctor_1[List.cons] x_17 x_80;
let x_82 : obj := ctor_1[List.cons] x_16 x_81;
let x_83 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_84 : obj := Lean.MessageData.joinSep x_82 x_83;
dec x_82;
let x_85 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_86 : obj := ctor_7[Lean.MessageData.compose] x_85 x_84;
let x_87 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_88 : obj := ctor_7[Lean.MessageData.compose] x_86 x_87;
let x_89 : obj := 1;
let x_90 : obj := ctor_5[Lean.MessageData.nest] x_89 x_88;
let x_91 : obj := ctor_6[Lean.MessageData.group] x_90;
let x_92 : obj := ctor_1[List.cons] x_91 x_2;
let x_93 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_92;
ret x_93
Bool.true →
let x_94 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_95 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_94;
let x_96 : obj := ctor_1[List.cons] x_73 x_95;
let x_97 : obj := ctor_1[List.cons] x_29 x_96;
let x_98 : obj := ctor_1[List.cons] x_26 x_97;
let x_99 : obj := ctor_1[List.cons] x_19 x_98;
let x_100 : obj := ctor_1[List.cons] x_18 x_99;
let x_101 : obj := ctor_1[List.cons] x_17 x_100;
let x_102 : obj := ctor_1[List.cons] x_16 x_101;
let x_103 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_104 : obj := Lean.MessageData.joinSep x_102 x_103;
dec x_102;
let x_105 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_106 : obj := ctor_7[Lean.MessageData.compose] x_105 x_104;
let x_107 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_108 : obj := ctor_7[Lean.MessageData.compose] x_106 x_107;
let x_109 : obj := 1;
let x_110 : obj := ctor_5[Lean.MessageData.nest] x_109 x_108;
let x_111 : obj := ctor_6[Lean.MessageData.group] x_110;
let x_112 : obj := ctor_1[List.cons] x_111 x_2;
let x_113 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_112;
ret x_113;
case x_12 : u8 of
Bool.false →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_114 x_115
Bool.true →
let x_116 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_114 x_116;
case x_11 : u8 of
Bool.false →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_117 x_118
Bool.true →
let x_119 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_117 x_119
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : @& obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : u8 of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
inc x_9;
let x_10 : obj := proj[1] x_6;
inc x_10;
let x_11 : obj := proj[2] x_6;
inc x_11;
let x_12 : obj := proj[3] x_6;
inc x_12;
dec x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
dec x_13;
let x_15 : usize := 0;
inc x_4;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
dec x_16;
case x_17 : u8 of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
dec x_9;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
inc x_27;
let x_28 : obj := proj[1] x_6;
inc x_28;
dec x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
dec x_29;
let x_31 : usize := 0;
inc x_4;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
dec x_32;
case x_33 : u8 of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
inc x_28;
inc x_27;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
dec x_27;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
inc x_43;
let x_44 : obj := proj[1] x_6;
inc x_44;
dec x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
dec x_45;
let x_47 : usize := 0;
inc x_4;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
dec x_48;
case x_49 : u8 of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
inc x_44;
inc x_43;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
dec x_43;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
inc x_58;
let x_59 : obj := proj[1] x_6;
inc x_59;
dec x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
dec x_60;
let x_62 : usize := 0;
inc x_4;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
dec x_63;
case x_64 : u8 of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
inc x_59;
inc x_58;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
dec x_58;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq._boxed;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
dec x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
dec x_6;
let x_8 : usize := 0;
inc x_1;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : u8 of
Bool.false →
dec x_1;
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
let x_15 : obj := proj[0] x_14;
inc x_15;
let x_16 : obj := proj[1] x_14;
inc x_16;
let x_17 : obj := reset[2] x_14;
let x_18 : obj := reuse x_17 in ctor_1[EStateM.Result.error] x_15 x_16;
ret x_18
Bool.true →
let x_19 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_19
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
dec x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
inc x_9;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : u8 of
Bool.false →
dec x_9;
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
inc x_11;
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
dec x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
let x_25 : obj := proj[0] x_24;
inc x_25;
let x_26 : obj := proj[1] x_24;
inc x_26;
dec x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
dec x_25;
ret x_27;
case x_8 : u8 of
Bool.false →
dec x_6;
dec x_2;
let x_29 : obj := proj[0] x_10;
inc x_29;
let x_30 : obj := proj[1] x_10;
inc x_30;
dec x_10;
let x_39 : u8 := unbox x_29;
dec x_29;
jmp block_28 x_1 x_39 x_30
Bool.true →
let x_31 : u8 := Nat.decLe x_6 x_6;
case x_31 : u8 of
Bool.false →
dec x_6;
dec x_2;
let x_32 : obj := proj[0] x_10;
inc x_32;
let x_33 : obj := proj[1] x_10;
inc x_33;
dec x_10;
let x_40 : u8 := unbox x_32;
dec x_32;
jmp block_28 x_1 x_40 x_33
Bool.true →
let x_34 : obj := proj[0] x_10;
inc x_34;
let x_35 : obj := proj[1] x_10;
inc x_35;
dec x_10;
let x_36 : usize := 0;
let x_37 : usize := USize.ofNat x_6;
dec x_6;
let x_38 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_36 x_37 x_1;
dec x_2;
let x_41 : u8 := unbox x_34;
dec x_34;
jmp block_28 x_38 x_41 x_35
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) : obj :=
let x_4 : usize := unbox x_1;
dec x_1;
let x_5 : usize := unbox x_2;
dec x_2;
let x_6 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_4 x_5 x_3;
ret x_6
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) (x_6 : obj) (x_7 : obj) : obj :=
let x_8 : usize := unbox x_5;
dec x_5;
let x_9 : usize := unbox x_6;
dec x_6;
let x_10 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_8 x_9 x_7;
dec x_1;
ret x_10
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
let x_5 : usize := unbox x_2;
dec x_2;
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_5 x_6 x_4;
dec x_1;
ret x_7
def Simps.applyProjectionRules._lambda_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_1 x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
dec x_2;
ret x_6
def Simps.applyProjectionRules._lambda_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_2 x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
dec x_2;
ret x_6
def Simps.applyProjectionRules._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
ret x_6
[expand_reset_reuse]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : u8 of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
inc x_8;
dec x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : @& obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : u8 of
Bool.false →
dec x_4;
dec x_3;
dec x_2;
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
let x_12 : obj := proj[0] x_9;
inc x_12;
let x_13 : obj := proj[1] x_9;
inc x_13;
let x_14 : obj := proj[2] x_9;
inc x_14;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
inc x_17;
let x_18 : obj := proj[5] x_9;
inc x_18;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
dec x_14;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : u8 of
Bool.false →
dec x_18;
dec x_17;
dec x_13;
dec x_12;
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : u8 := isShared x_9;
case x_25 : u8 of
Bool.false →
let x_26 : obj := proj[5] x_9;
dec x_26;
let x_27 : obj := proj[4] x_9;
dec x_27;
let x_28 : obj := proj[3] x_9;
dec x_28;
let x_29 : obj := proj[2] x_9;
dec x_29;
let x_30 : obj := proj[1] x_9;
dec x_30;
let x_31 : obj := proj[0] x_9;
dec x_31;
let x_32 : u8 := Lean.Syntax.isMissing x_13;
case x_32 : u8 of
Bool.false →
inc x_4;
inc x_3;
set x_9[3] := x_4;
set x_9[2] := x_3;
let x_33 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_34 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_33;
ret x_34
Bool.true →
dec x_13;
inc x_4;
inc x_3;
inc x_2;
set x_9[3] := x_4;
set x_9[2] := x_3;
set x_9[1] := x_2;
let x_35 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_35;
ret x_36
Bool.true →
dec x_9;
let x_37 : u8 := Lean.Syntax.isMissing x_13;
case x_37 : u8 of
Bool.false →
inc x_4;
inc x_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_38[6, 0] : u8 := x_15;
sset x_38[6, 1] : u8 := x_16;
sset x_38[6, 2] : u8 := x_19;
let x_39 : obj := Array.uset ◾ x_11 x_6 x_38 ◾;
let x_40 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_39;
ret x_40
Bool.true →
dec x_13;
inc x_4;
inc x_3;
inc x_2;
let x_41 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_41[6, 0] : u8 := x_15;
sset x_41[6, 1] : u8 := x_16;
sset x_41[6, 2] : u8 := x_19;
let x_42 : obj := Array.uset ◾ x_11 x_6 x_41 ◾;
let x_43 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_42;
ret x_43
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 1;
sset x_7[6, 0] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 1;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 0] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 1;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_38;
sset x_39[6, 1] : u8 := x_14;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 1;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_42;
sset x_43[6, 1] : u8 := x_14;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_44;
ret x_45
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 0;
sset x_7[6, 0] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 0;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 0] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 0;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_38;
sset x_39[6, 1] : u8 := x_14;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 0;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_42;
sset x_43[6, 1] : u8 := x_14;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_44;
ret x_45
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 1;
sset x_7[6, 1] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 1;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 1] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 1;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_14;
sset x_39[6, 1] : u8 := x_38;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 1;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_14;
sset x_43[6, 1] : u8 := x_42;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_44;
ret x_45
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
dec x_2;
dec x_1;
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : u8 := isShared x_3;
case x_8 : u8 of
Bool.false →
inc x_2;
let x_9 : obj := app x_2 x_6;
inc x_1;
let x_10 : obj := app x_1 x_9;
set x_3[1] := x_4;
set x_3[0] := x_10;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_3;
ret x_11
Bool.true →
inc x_7;
inc x_6;
dec x_3;
inc x_2;
let x_12 : obj := app x_2 x_6;
inc x_1;
let x_13 : obj := app x_1 x_12;
let x_14 : obj := ctor_1[List.cons] x_13 x_4;
let x_15 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_7 x_14;
ret x_15
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
dec x_2;
dec x_1;
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : obj := proj[0] x_3;
let x_7 : obj := proj[1] x_3;
let x_8 : u8 := isShared x_3;
case x_8 : u8 of
Bool.false →
inc x_2;
let x_9 : obj := app x_2 x_6;
inc x_1;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := ctor_0[Lean.MessageData.ofFormat] x_10;
set x_3[1] := x_4;
set x_3[0] := x_11;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_3;
ret x_12
Bool.true →
inc x_7;
inc x_6;
dec x_3;
inc x_2;
let x_13 : obj := app x_2 x_6;
inc x_1;
let x_14 : obj := app x_1 x_13;
let x_15 : obj := ctor_0[Lean.MessageData.ofFormat] x_14;
let x_16 : obj := ctor_1[List.cons] x_15 x_4;
let x_17 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_7 x_16;
ret x_17
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
let x_5 : obj := proj[1] x_1;
let x_6 : u8 := isShared x_1;
case x_6 : u8 of
Bool.false →
let x_7 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_8 : obj := ctor_3[Std.Format.text] x_7;
let x_9 : obj := ctor_0[Lean.MessageData.ofFormat] x_8;
set x_1[1] := x_2;
set x_1[0] := x_9;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_1;
ret x_10
Bool.true →
inc x_5;
inc x_4;
dec x_1;
let x_11 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_4;
let x_12 : obj := ctor_3[Std.Format.text] x_11;
let x_13 : obj := ctor_0[Lean.MessageData.ofFormat] x_12;
let x_14 : obj := ctor_1[List.cons] x_13 x_2;
let x_15 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_5 x_14;
ret x_15
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
inc x_4;
let x_5 : obj := proj[1] x_1;
inc x_5;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := proj[0] x_4;
inc x_7;
let x_8 : obj := proj[1] x_4;
inc x_8;
let x_9 : obj := proj[2] x_4;
inc x_9;
let x_10 : obj := proj[3] x_4;
inc x_10;
let x_11 : u8 := sproj[6, 0] x_4;
let x_12 : u8 := sproj[6, 1] x_4;
let x_13 : obj := proj[4] x_4;
inc x_13;
let x_14 : obj := proj[5] x_4;
inc x_14;
let x_15 : u8 := sproj[6, 2] x_4;
dec x_4;
let x_16 : obj := Lean.MessageData.ofName x_7;
let x_17 : obj := Lean.MessageData.ofSyntax x_8;
let x_18 : obj := Lean.MessageData.ofName x_9;
let x_19 : obj := Lean.MessageData.ofSyntax x_10;
let x_20 : obj := Array.toList ◾ x_14;
let x_21 : obj := ctor_0[List.nil];
let x_22 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_20 x_21;
let x_23 : obj := Lean.MessageData.ofList x_22;
dec x_22;
block_117 (x_24 : obj) :=
let x_25 : obj := ctor_3[Std.Format.text] x_24;
let x_26 : obj := ctor_0[Lean.MessageData.ofFormat] x_25;
block_114 (x_27 : obj) :=
let x_28 : obj := ctor_3[Std.Format.text] x_27;
let x_29 : obj := ctor_0[Lean.MessageData.ofFormat] x_28;
case x_13 : obj of
Option.none →
case x_15 : u8 of
Bool.false →
let x_30 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_31 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_30;
let x_32 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_33 : obj := ctor_1[List.cons] x_32 x_31;
let x_34 : obj := ctor_1[List.cons] x_29 x_33;
let x_35 : obj := ctor_1[List.cons] x_26 x_34;
let x_36 : obj := ctor_1[List.cons] x_19 x_35;
let x_37 : obj := ctor_1[List.cons] x_18 x_36;
let x_38 : obj := ctor_1[List.cons] x_17 x_37;
let x_39 : obj := ctor_1[List.cons] x_16 x_38;
let x_40 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_41 : obj := Lean.MessageData.joinSep x_39 x_40;
dec x_39;
let x_42 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_43 : obj := ctor_7[Lean.MessageData.compose] x_42 x_41;
let x_44 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_45 : obj := ctor_7[Lean.MessageData.compose] x_43 x_44;
let x_46 : obj := 1;
let x_47 : obj := ctor_5[Lean.MessageData.nest] x_46 x_45;
let x_48 : obj := ctor_6[Lean.MessageData.group] x_47;
let x_49 : obj := ctor_1[List.cons] x_48 x_2;
let x_50 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_49;
ret x_50
Bool.true →
let x_51 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_52 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_51;
let x_53 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_54 : obj := ctor_1[List.cons] x_53 x_52;
let x_55 : obj := ctor_1[List.cons] x_29 x_54;
let x_56 : obj := ctor_1[List.cons] x_26 x_55;
let x_57 : obj := ctor_1[List.cons] x_19 x_56;
let x_58 : obj := ctor_1[List.cons] x_18 x_57;
let x_59 : obj := ctor_1[List.cons] x_17 x_58;
let x_60 : obj := ctor_1[List.cons] x_16 x_59;
let x_61 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_62 : obj := Lean.MessageData.joinSep x_60 x_61;
dec x_60;
let x_63 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_64 : obj := ctor_7[Lean.MessageData.compose] x_63 x_62;
let x_65 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_66 : obj := ctor_7[Lean.MessageData.compose] x_64 x_65;
let x_67 : obj := 1;
let x_68 : obj := ctor_5[Lean.MessageData.nest] x_67 x_66;
let x_69 : obj := ctor_6[Lean.MessageData.group] x_68;
let x_70 : obj := ctor_1[List.cons] x_69 x_2;
let x_71 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_70;
ret x_71
Option.some →
let x_72 : obj := proj[0] x_13;
inc x_72;
dec x_13;
let x_73 : obj := Lean.MessageData.ofExpr x_72;
case x_15 : u8 of
Bool.false →
let x_74 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_75 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_74;
let x_76 : obj := ctor_1[List.cons] x_73 x_75;
let x_77 : obj := ctor_1[List.cons] x_29 x_76;
let x_78 : obj := ctor_1[List.cons] x_26 x_77;
let x_79 : obj := ctor_1[List.cons] x_19 x_78;
let x_80 : obj := ctor_1[List.cons] x_18 x_79;
let x_81 : obj := ctor_1[List.cons] x_17 x_80;
let x_82 : obj := ctor_1[List.cons] x_16 x_81;
let x_83 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_84 : obj := Lean.MessageData.joinSep x_82 x_83;
dec x_82;
let x_85 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_86 : obj := ctor_7[Lean.MessageData.compose] x_85 x_84;
let x_87 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_88 : obj := ctor_7[Lean.MessageData.compose] x_86 x_87;
let x_89 : obj := 1;
let x_90 : obj := ctor_5[Lean.MessageData.nest] x_89 x_88;
let x_91 : obj := ctor_6[Lean.MessageData.group] x_90;
let x_92 : obj := ctor_1[List.cons] x_91 x_2;
let x_93 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_92;
ret x_93
Bool.true →
let x_94 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_95 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_94;
let x_96 : obj := ctor_1[List.cons] x_73 x_95;
let x_97 : obj := ctor_1[List.cons] x_29 x_96;
let x_98 : obj := ctor_1[List.cons] x_26 x_97;
let x_99 : obj := ctor_1[List.cons] x_19 x_98;
let x_100 : obj := ctor_1[List.cons] x_18 x_99;
let x_101 : obj := ctor_1[List.cons] x_17 x_100;
let x_102 : obj := ctor_1[List.cons] x_16 x_101;
let x_103 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_104 : obj := Lean.MessageData.joinSep x_102 x_103;
dec x_102;
let x_105 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_106 : obj := ctor_7[Lean.MessageData.compose] x_105 x_104;
let x_107 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_108 : obj := ctor_7[Lean.MessageData.compose] x_106 x_107;
let x_109 : obj := 1;
let x_110 : obj := ctor_5[Lean.MessageData.nest] x_109 x_108;
let x_111 : obj := ctor_6[Lean.MessageData.group] x_110;
let x_112 : obj := ctor_1[List.cons] x_111 x_2;
let x_113 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_112;
ret x_113;
case x_12 : u8 of
Bool.false →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_114 x_115
Bool.true →
let x_116 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_114 x_116;
case x_11 : u8 of
Bool.false →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_117 x_118
Bool.true →
let x_119 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_117 x_119
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : @& obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : u8 of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
inc x_9;
let x_10 : obj := proj[1] x_6;
inc x_10;
let x_11 : obj := proj[2] x_6;
inc x_11;
let x_12 : obj := proj[3] x_6;
inc x_12;
dec x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
dec x_13;
let x_15 : usize := 0;
inc x_4;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
dec x_16;
case x_17 : u8 of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
dec x_9;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
inc x_27;
let x_28 : obj := proj[1] x_6;
inc x_28;
dec x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
dec x_29;
let x_31 : usize := 0;
inc x_4;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
dec x_32;
case x_33 : u8 of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
inc x_28;
inc x_27;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
dec x_27;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
inc x_43;
let x_44 : obj := proj[1] x_6;
inc x_44;
dec x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
dec x_45;
let x_47 : usize := 0;
inc x_4;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
dec x_48;
case x_49 : u8 of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
inc x_44;
inc x_43;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
dec x_43;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
inc x_58;
let x_59 : obj := proj[1] x_6;
inc x_59;
dec x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
dec x_60;
let x_62 : usize := 0;
inc x_4;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
dec x_63;
case x_64 : u8 of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
inc x_59;
inc x_58;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
dec x_58;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq._boxed;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
dec x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
dec x_6;
let x_8 : usize := 0;
inc x_1;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : u8 of
Bool.false →
dec x_1;
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
let x_15 : obj := proj[0] x_14;
let x_16 : obj := proj[1] x_14;
let x_17 : u8 := isShared x_14;
case x_17 : u8 of
Bool.false →
ret x_14
Bool.true →
inc x_16;
inc x_15;
dec x_14;
let x_18 : obj := ctor_1[EStateM.Result.error] x_15 x_16;
ret x_18
Bool.true →
let x_19 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_19
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
dec x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
inc x_9;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : u8 of
Bool.false →
dec x_9;
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
inc x_11;
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
dec x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
let x_25 : obj := proj[0] x_24;
inc x_25;
let x_26 : obj := proj[1] x_24;
inc x_26;
dec x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
dec x_25;
ret x_27;
case x_8 : u8 of
Bool.false →
dec x_6;
dec x_2;
let x_29 : obj := proj[0] x_10;
inc x_29;
let x_30 : obj := proj[1] x_10;
inc x_30;
dec x_10;
let x_31 : u8 := unbox x_29;
dec x_29;
jmp block_28 x_1 x_31 x_30
Bool.true →
let x_32 : u8 := Nat.decLe x_6 x_6;
case x_32 : u8 of
Bool.false →
dec x_6;
dec x_2;
let x_33 : obj := proj[0] x_10;
inc x_33;
let x_34 : obj := proj[1] x_10;
inc x_34;
dec x_10;
let x_35 : u8 := unbox x_33;
dec x_33;
jmp block_28 x_1 x_35 x_34
Bool.true →
let x_36 : obj := proj[0] x_10;
inc x_36;
let x_37 : obj := proj[1] x_10;
inc x_37;
dec x_10;
let x_38 : usize := 0;
let x_39 : usize := USize.ofNat x_6;
dec x_6;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_38 x_39 x_1;
dec x_2;
let x_41 : u8 := unbox x_36;
dec x_36;
jmp block_28 x_40 x_41 x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) : obj :=
let x_4 : usize := unbox x_1;
dec x_1;
let x_5 : usize := unbox x_2;
dec x_2;
let x_6 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_4 x_5 x_3;
ret x_6
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) (x_6 : obj) (x_7 : obj) : obj :=
let x_8 : usize := unbox x_5;
dec x_5;
let x_9 : usize := unbox x_6;
dec x_6;
let x_10 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_8 x_9 x_7;
dec x_1;
ret x_10
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
let x_5 : usize := unbox x_2;
dec x_2;
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_5 x_6 x_4;
dec x_1;
ret x_7
def Simps.applyProjectionRules._lambda_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_1 x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
dec x_2;
ret x_6
def Simps.applyProjectionRules._lambda_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_2 x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
dec x_2;
ret x_6
def Simps.applyProjectionRules._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
ret x_6
[push_proj]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : u8 of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
inc x_8;
dec x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : @& obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : u8 of
Bool.false →
dec x_4;
dec x_3;
dec x_2;
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
let x_12 : obj := proj[0] x_9;
inc x_12;
let x_13 : obj := proj[1] x_9;
inc x_13;
let x_14 : obj := proj[2] x_9;
inc x_14;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
inc x_17;
let x_18 : obj := proj[5] x_9;
inc x_18;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
dec x_14;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : u8 of
Bool.false →
dec x_18;
dec x_17;
dec x_13;
dec x_12;
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : u8 := isShared x_9;
case x_25 : u8 of
Bool.false →
let x_26 : obj := proj[5] x_9;
dec x_26;
let x_27 : obj := proj[4] x_9;
dec x_27;
let x_28 : obj := proj[3] x_9;
dec x_28;
let x_29 : obj := proj[2] x_9;
dec x_29;
let x_30 : obj := proj[1] x_9;
dec x_30;
let x_31 : obj := proj[0] x_9;
dec x_31;
let x_32 : u8 := Lean.Syntax.isMissing x_13;
case x_32 : u8 of
Bool.false →
inc x_4;
inc x_3;
set x_9[3] := x_4;
set x_9[2] := x_3;
let x_33 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_34 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_33;
ret x_34
Bool.true →
dec x_13;
inc x_4;
inc x_3;
inc x_2;
set x_9[3] := x_4;
set x_9[2] := x_3;
set x_9[1] := x_2;
let x_35 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_35;
ret x_36
Bool.true →
dec x_9;
let x_37 : u8 := Lean.Syntax.isMissing x_13;
case x_37 : u8 of
Bool.false →
inc x_4;
inc x_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_38[6, 0] : u8 := x_15;
sset x_38[6, 1] : u8 := x_16;
sset x_38[6, 2] : u8 := x_19;
let x_39 : obj := Array.uset ◾ x_11 x_6 x_38 ◾;
let x_40 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_39;
ret x_40
Bool.true →
dec x_13;
inc x_4;
inc x_3;
inc x_2;
let x_41 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_41[6, 0] : u8 := x_15;
sset x_41[6, 1] : u8 := x_16;
sset x_41[6, 2] : u8 := x_19;
let x_42 : obj := Array.uset ◾ x_11 x_6 x_41 ◾;
let x_43 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_42;
ret x_43
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 1;
sset x_7[6, 0] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 1;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 0] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 1;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_38;
sset x_39[6, 1] : u8 := x_14;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 1;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_42;
sset x_43[6, 1] : u8 := x_14;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_44;
ret x_45
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 0;
sset x_7[6, 0] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 0;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 0] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 0;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_38;
sset x_39[6, 1] : u8 := x_14;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 0;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_42;
sset x_43[6, 1] : u8 := x_14;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_44;
ret x_45
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 1;
sset x_7[6, 1] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 1;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 1] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 1;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_14;
sset x_39[6, 1] : u8 := x_38;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 1;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_14;
sset x_43[6, 1] : u8 := x_42;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_44;
ret x_45
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
dec x_2;
dec x_1;
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : u8 := isShared x_3;
case x_6 : u8 of
Bool.false →
let x_7 : obj := proj[0] x_3;
let x_8 : obj := proj[1] x_3;
inc x_2;
let x_9 : obj := app x_2 x_7;
inc x_1;
let x_10 : obj := app x_1 x_9;
set x_3[1] := x_4;
set x_3[0] := x_10;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_8 x_3;
ret x_11
Bool.true →
let x_12 : obj := proj[0] x_3;
let x_13 : obj := proj[1] x_3;
inc x_13;
inc x_12;
dec x_3;
inc x_2;
let x_14 : obj := app x_2 x_12;
inc x_1;
let x_15 : obj := app x_1 x_14;
let x_16 : obj := ctor_1[List.cons] x_15 x_4;
let x_17 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_13 x_16;
ret x_17
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
dec x_2;
dec x_1;
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : u8 := isShared x_3;
case x_6 : u8 of
Bool.false →
let x_7 : obj := proj[0] x_3;
let x_8 : obj := proj[1] x_3;
inc x_2;
let x_9 : obj := app x_2 x_7;
inc x_1;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := ctor_0[Lean.MessageData.ofFormat] x_10;
set x_3[1] := x_4;
set x_3[0] := x_11;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_8 x_3;
ret x_12
Bool.true →
let x_13 : obj := proj[0] x_3;
let x_14 : obj := proj[1] x_3;
inc x_14;
inc x_13;
dec x_3;
inc x_2;
let x_15 : obj := app x_2 x_13;
inc x_1;
let x_16 : obj := app x_1 x_15;
let x_17 : obj := ctor_0[Lean.MessageData.ofFormat] x_16;
let x_18 : obj := ctor_1[List.cons] x_17 x_4;
let x_19 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_14 x_18;
ret x_19
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : u8 := isShared x_1;
case x_4 : u8 of
Bool.false →
let x_5 : obj := proj[0] x_1;
let x_6 : obj := proj[1] x_1;
let x_7 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_5;
let x_8 : obj := ctor_3[Std.Format.text] x_7;
let x_9 : obj := ctor_0[Lean.MessageData.ofFormat] x_8;
set x_1[1] := x_2;
set x_1[0] := x_9;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_6 x_1;
ret x_10
Bool.true →
let x_11 : obj := proj[0] x_1;
let x_12 : obj := proj[1] x_1;
inc x_12;
inc x_11;
dec x_1;
let x_13 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_11;
let x_14 : obj := ctor_3[Std.Format.text] x_13;
let x_15 : obj := ctor_0[Lean.MessageData.ofFormat] x_14;
let x_16 : obj := ctor_1[List.cons] x_15 x_2;
let x_17 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_12 x_16;
ret x_17
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
inc x_4;
let x_5 : obj := proj[1] x_1;
inc x_5;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := proj[0] x_4;
inc x_7;
let x_8 : obj := proj[1] x_4;
inc x_8;
let x_9 : obj := proj[2] x_4;
inc x_9;
let x_10 : obj := proj[3] x_4;
inc x_10;
let x_11 : u8 := sproj[6, 0] x_4;
let x_12 : u8 := sproj[6, 1] x_4;
let x_13 : obj := proj[4] x_4;
inc x_13;
let x_14 : obj := proj[5] x_4;
inc x_14;
let x_15 : u8 := sproj[6, 2] x_4;
dec x_4;
let x_16 : obj := Lean.MessageData.ofName x_7;
let x_17 : obj := Lean.MessageData.ofSyntax x_8;
let x_18 : obj := Lean.MessageData.ofName x_9;
let x_19 : obj := Lean.MessageData.ofSyntax x_10;
let x_20 : obj := Array.toList ◾ x_14;
let x_21 : obj := ctor_0[List.nil];
let x_22 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_20 x_21;
let x_23 : obj := Lean.MessageData.ofList x_22;
dec x_22;
block_117 (x_24 : obj) :=
let x_25 : obj := ctor_3[Std.Format.text] x_24;
let x_26 : obj := ctor_0[Lean.MessageData.ofFormat] x_25;
block_114 (x_27 : obj) :=
let x_28 : obj := ctor_3[Std.Format.text] x_27;
let x_29 : obj := ctor_0[Lean.MessageData.ofFormat] x_28;
case x_13 : obj of
Option.none →
case x_15 : u8 of
Bool.false →
let x_30 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_31 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_30;
let x_32 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_33 : obj := ctor_1[List.cons] x_32 x_31;
let x_34 : obj := ctor_1[List.cons] x_29 x_33;
let x_35 : obj := ctor_1[List.cons] x_26 x_34;
let x_36 : obj := ctor_1[List.cons] x_19 x_35;
let x_37 : obj := ctor_1[List.cons] x_18 x_36;
let x_38 : obj := ctor_1[List.cons] x_17 x_37;
let x_39 : obj := ctor_1[List.cons] x_16 x_38;
let x_40 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_41 : obj := Lean.MessageData.joinSep x_39 x_40;
dec x_39;
let x_42 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_43 : obj := ctor_7[Lean.MessageData.compose] x_42 x_41;
let x_44 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_45 : obj := ctor_7[Lean.MessageData.compose] x_43 x_44;
let x_46 : obj := 1;
let x_47 : obj := ctor_5[Lean.MessageData.nest] x_46 x_45;
let x_48 : obj := ctor_6[Lean.MessageData.group] x_47;
let x_49 : obj := ctor_1[List.cons] x_48 x_2;
let x_50 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_49;
ret x_50
Bool.true →
let x_51 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_52 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_51;
let x_53 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_54 : obj := ctor_1[List.cons] x_53 x_52;
let x_55 : obj := ctor_1[List.cons] x_29 x_54;
let x_56 : obj := ctor_1[List.cons] x_26 x_55;
let x_57 : obj := ctor_1[List.cons] x_19 x_56;
let x_58 : obj := ctor_1[List.cons] x_18 x_57;
let x_59 : obj := ctor_1[List.cons] x_17 x_58;
let x_60 : obj := ctor_1[List.cons] x_16 x_59;
let x_61 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_62 : obj := Lean.MessageData.joinSep x_60 x_61;
dec x_60;
let x_63 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_64 : obj := ctor_7[Lean.MessageData.compose] x_63 x_62;
let x_65 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_66 : obj := ctor_7[Lean.MessageData.compose] x_64 x_65;
let x_67 : obj := 1;
let x_68 : obj := ctor_5[Lean.MessageData.nest] x_67 x_66;
let x_69 : obj := ctor_6[Lean.MessageData.group] x_68;
let x_70 : obj := ctor_1[List.cons] x_69 x_2;
let x_71 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_70;
ret x_71
Option.some →
let x_72 : obj := proj[0] x_13;
inc x_72;
dec x_13;
let x_73 : obj := Lean.MessageData.ofExpr x_72;
case x_15 : u8 of
Bool.false →
let x_74 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_75 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_74;
let x_76 : obj := ctor_1[List.cons] x_73 x_75;
let x_77 : obj := ctor_1[List.cons] x_29 x_76;
let x_78 : obj := ctor_1[List.cons] x_26 x_77;
let x_79 : obj := ctor_1[List.cons] x_19 x_78;
let x_80 : obj := ctor_1[List.cons] x_18 x_79;
let x_81 : obj := ctor_1[List.cons] x_17 x_80;
let x_82 : obj := ctor_1[List.cons] x_16 x_81;
let x_83 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_84 : obj := Lean.MessageData.joinSep x_82 x_83;
dec x_82;
let x_85 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_86 : obj := ctor_7[Lean.MessageData.compose] x_85 x_84;
let x_87 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_88 : obj := ctor_7[Lean.MessageData.compose] x_86 x_87;
let x_89 : obj := 1;
let x_90 : obj := ctor_5[Lean.MessageData.nest] x_89 x_88;
let x_91 : obj := ctor_6[Lean.MessageData.group] x_90;
let x_92 : obj := ctor_1[List.cons] x_91 x_2;
let x_93 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_92;
ret x_93
Bool.true →
let x_94 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_95 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_94;
let x_96 : obj := ctor_1[List.cons] x_73 x_95;
let x_97 : obj := ctor_1[List.cons] x_29 x_96;
let x_98 : obj := ctor_1[List.cons] x_26 x_97;
let x_99 : obj := ctor_1[List.cons] x_19 x_98;
let x_100 : obj := ctor_1[List.cons] x_18 x_99;
let x_101 : obj := ctor_1[List.cons] x_17 x_100;
let x_102 : obj := ctor_1[List.cons] x_16 x_101;
let x_103 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_104 : obj := Lean.MessageData.joinSep x_102 x_103;
dec x_102;
let x_105 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_106 : obj := ctor_7[Lean.MessageData.compose] x_105 x_104;
let x_107 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_108 : obj := ctor_7[Lean.MessageData.compose] x_106 x_107;
let x_109 : obj := 1;
let x_110 : obj := ctor_5[Lean.MessageData.nest] x_109 x_108;
let x_111 : obj := ctor_6[Lean.MessageData.group] x_110;
let x_112 : obj := ctor_1[List.cons] x_111 x_2;
let x_113 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_112;
ret x_113;
case x_12 : u8 of
Bool.false →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_114 x_115
Bool.true →
let x_116 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_114 x_116;
case x_11 : u8 of
Bool.false →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_117 x_118
Bool.true →
let x_119 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_117 x_119
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : @& obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : u8 of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
inc x_9;
let x_10 : obj := proj[1] x_6;
inc x_10;
let x_11 : obj := proj[2] x_6;
inc x_11;
let x_12 : obj := proj[3] x_6;
inc x_12;
dec x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
dec x_13;
let x_15 : usize := 0;
inc x_4;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
dec x_16;
case x_17 : u8 of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
dec x_9;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
inc x_27;
let x_28 : obj := proj[1] x_6;
inc x_28;
dec x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
dec x_29;
let x_31 : usize := 0;
inc x_4;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
dec x_32;
case x_33 : u8 of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
inc x_28;
inc x_27;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
dec x_27;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
inc x_43;
let x_44 : obj := proj[1] x_6;
inc x_44;
dec x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
dec x_45;
let x_47 : usize := 0;
inc x_4;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
dec x_48;
case x_49 : u8 of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
inc x_44;
inc x_43;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
dec x_43;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
inc x_58;
let x_59 : obj := proj[1] x_6;
inc x_59;
dec x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
dec x_60;
let x_62 : usize := 0;
inc x_4;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
dec x_63;
case x_64 : u8 of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
inc x_59;
inc x_58;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
dec x_58;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq._boxed;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
dec x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
dec x_6;
let x_8 : usize := 0;
inc x_1;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : u8 of
Bool.false →
dec x_1;
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
let x_15 : u8 := isShared x_14;
case x_15 : u8 of
Bool.false →
ret x_14
Bool.true →
let x_16 : obj := proj[0] x_14;
let x_17 : obj := proj[1] x_14;
inc x_17;
inc x_16;
dec x_14;
let x_18 : obj := ctor_1[EStateM.Result.error] x_16 x_17;
ret x_18
Bool.true →
let x_19 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_19
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
dec x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
inc x_9;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : u8 of
Bool.false →
dec x_9;
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
inc x_11;
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
dec x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
let x_25 : obj := proj[0] x_24;
inc x_25;
let x_26 : obj := proj[1] x_24;
inc x_26;
dec x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
dec x_25;
ret x_27;
case x_8 : u8 of
Bool.false →
dec x_6;
dec x_2;
let x_29 : obj := proj[0] x_10;
inc x_29;
let x_30 : obj := proj[1] x_10;
inc x_30;
dec x_10;
let x_31 : u8 := unbox x_29;
dec x_29;
jmp block_28 x_1 x_31 x_30
Bool.true →
let x_32 : u8 := Nat.decLe x_6 x_6;
case x_32 : u8 of
Bool.false →
dec x_6;
dec x_2;
let x_33 : obj := proj[0] x_10;
inc x_33;
let x_34 : obj := proj[1] x_10;
inc x_34;
dec x_10;
let x_35 : u8 := unbox x_33;
dec x_33;
jmp block_28 x_1 x_35 x_34
Bool.true →
let x_36 : obj := proj[0] x_10;
inc x_36;
let x_37 : obj := proj[1] x_10;
inc x_37;
dec x_10;
let x_38 : usize := 0;
let x_39 : usize := USize.ofNat x_6;
dec x_6;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_38 x_39 x_1;
dec x_2;
let x_41 : u8 := unbox x_36;
dec x_36;
jmp block_28 x_40 x_41 x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) : obj :=
let x_4 : usize := unbox x_1;
dec x_1;
let x_5 : usize := unbox x_2;
dec x_2;
let x_6 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_4 x_5 x_3;
ret x_6
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) (x_6 : obj) (x_7 : obj) : obj :=
let x_8 : usize := unbox x_5;
dec x_5;
let x_9 : usize := unbox x_6;
dec x_6;
let x_10 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_8 x_9 x_7;
dec x_1;
ret x_10
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
let x_5 : usize := unbox x_2;
dec x_2;
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_5 x_6 x_4;
dec x_1;
ret x_7
def Simps.applyProjectionRules._lambda_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_1 x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
dec x_2;
ret x_6
def Simps.applyProjectionRules._lambda_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_2 x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
dec x_2;
ret x_6
def Simps.applyProjectionRules._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
ret x_6
[result]
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 (x_1 : usize) (x_2 : usize) (x_3 : obj) : obj :=
let x_4 : u8 := USize.decLt x_2 x_1;
case x_4 : u8 of
Bool.false →
ret x_3
Bool.true →
let x_5 : obj := Array.uget ◾ x_3 x_2 ◾;
let x_6 : obj := 0;
let x_7 : obj := Array.uset ◾ x_3 x_2 x_6 ◾;
let x_8 : obj := proj[2] x_5;
inc x_8;
dec x_5;
let x_9 : usize := 1;
let x_10 : usize := USize.add x_2 x_9;
let x_11 : obj := Array.uset ◾ x_7 x_2 x_8 ◾;
let x_12 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_1 x_10 x_11;
ret x_12
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 (x_1 : @& obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : usize) (x_6 : usize) (x_7 : obj) : obj :=
let x_8 : u8 := USize.decLt x_6 x_5;
case x_8 : u8 of
Bool.false →
dec x_4;
dec x_3;
dec x_2;
ret x_7
Bool.true →
let x_9 : obj := Array.uget ◾ x_7 x_6 ◾;
let x_10 : obj := 0;
let x_11 : obj := Array.uset ◾ x_7 x_6 x_10 ◾;
let x_12 : obj := proj[0] x_9;
inc x_12;
let x_13 : obj := proj[1] x_9;
inc x_13;
let x_14 : obj := proj[2] x_9;
inc x_14;
let x_15 : u8 := sproj[6, 0] x_9;
let x_16 : u8 := sproj[6, 1] x_9;
let x_17 : obj := proj[4] x_9;
inc x_17;
let x_18 : obj := proj[5] x_9;
inc x_18;
let x_19 : u8 := sproj[6, 2] x_9;
let x_20 : u8 := Lean.Name.beq x_14 x_1;
dec x_14;
let x_21 : usize := 1;
let x_22 : usize := USize.add x_6 x_21;
case x_20 : u8 of
Bool.false →
dec x_18;
dec x_17;
dec x_13;
dec x_12;
let x_23 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_24 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_23;
ret x_24
Bool.true →
let x_25 : u8 := isShared x_9;
case x_25 : u8 of
Bool.false →
let x_26 : obj := proj[5] x_9;
dec x_26;
let x_27 : obj := proj[4] x_9;
dec x_27;
let x_28 : obj := proj[3] x_9;
dec x_28;
let x_29 : obj := proj[2] x_9;
dec x_29;
let x_30 : obj := proj[1] x_9;
dec x_30;
let x_31 : obj := proj[0] x_9;
dec x_31;
let x_32 : u8 := Lean.Syntax.isMissing x_13;
case x_32 : u8 of
Bool.false →
inc x_4;
inc x_3;
set x_9[3] := x_4;
set x_9[2] := x_3;
let x_33 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_34 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_33;
ret x_34
Bool.true →
dec x_13;
inc x_4;
inc x_3;
inc x_2;
set x_9[3] := x_4;
set x_9[2] := x_3;
set x_9[1] := x_2;
let x_35 : obj := Array.uset ◾ x_11 x_6 x_9 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_35;
ret x_36
Bool.true →
dec x_9;
let x_37 : u8 := Lean.Syntax.isMissing x_13;
case x_37 : u8 of
Bool.false →
inc x_4;
inc x_3;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_13 x_3 x_4 x_17 x_18;
sset x_38[6, 0] : u8 := x_15;
sset x_38[6, 1] : u8 := x_16;
sset x_38[6, 2] : u8 := x_19;
let x_39 : obj := Array.uset ◾ x_11 x_6 x_38 ◾;
let x_40 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_39;
ret x_40
Bool.true →
dec x_13;
inc x_4;
inc x_3;
inc x_2;
let x_41 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_12 x_2 x_3 x_4 x_17 x_18;
sset x_41[6, 0] : u8 := x_15;
sset x_41[6, 1] : u8 := x_16;
sset x_41[6, 2] : u8 := x_19;
let x_42 : obj := Array.uset ◾ x_11 x_6 x_41 ◾;
let x_43 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_5 x_22 x_42;
ret x_43
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 1;
sset x_7[6, 0] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 1;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 0] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 1;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_38;
sset x_39[6, 1] : u8 := x_14;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 1;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_42;
sset x_43[6, 1] : u8 := x_14;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_3 x_20 x_44;
ret x_45
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 1] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 0;
sset x_7[6, 0] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 0;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 0] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 0;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_38;
sset x_39[6, 1] : u8 := x_14;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 0;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_42;
sset x_43[6, 1] : u8 := x_14;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_3 x_20 x_44;
ret x_45
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 (x_1 : @& obj) (x_2 : obj) (x_3 : usize) (x_4 : usize) (x_5 : obj) : obj :=
let x_6 : u8 := USize.decLt x_4 x_3;
case x_6 : u8 of
Bool.false →
dec x_2;
ret x_5
Bool.true →
let x_7 : obj := Array.uget ◾ x_5 x_4 ◾;
let x_8 : obj := 0;
let x_9 : obj := Array.uset ◾ x_5 x_4 x_8 ◾;
let x_10 : obj := proj[0] x_7;
inc x_10;
let x_11 : obj := proj[1] x_7;
inc x_11;
let x_12 : obj := proj[2] x_7;
inc x_12;
let x_13 : obj := proj[3] x_7;
inc x_13;
let x_14 : u8 := sproj[6, 0] x_7;
let x_15 : obj := proj[4] x_7;
inc x_15;
let x_16 : obj := proj[5] x_7;
inc x_16;
let x_17 : u8 := sproj[6, 2] x_7;
let x_18 : u8 := Lean.Name.beq x_12 x_1;
let x_19 : usize := 1;
let x_20 : usize := USize.add x_4 x_19;
case x_18 : u8 of
Bool.false →
dec x_16;
dec x_15;
dec x_13;
dec x_12;
dec x_11;
dec x_10;
let x_21 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_22 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_21;
ret x_22
Bool.true →
let x_23 : u8 := isShared x_7;
case x_23 : u8 of
Bool.false →
let x_24 : obj := proj[5] x_7;
dec x_24;
let x_25 : obj := proj[4] x_7;
dec x_25;
let x_26 : obj := proj[3] x_7;
dec x_26;
let x_27 : obj := proj[2] x_7;
dec x_27;
let x_28 : obj := proj[1] x_7;
dec x_28;
let x_29 : obj := proj[0] x_7;
dec x_29;
let x_30 : u8 := Lean.Syntax.isMissing x_11;
case x_30 : u8 of
Bool.false →
let x_31 : u8 := 1;
sset x_7[6, 1] : u8 := x_31;
let x_32 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_33 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_32;
ret x_33
Bool.true →
dec x_11;
let x_34 : u8 := 1;
inc x_2;
set x_7[1] := x_2;
sset x_7[6, 1] : u8 := x_34;
let x_35 : obj := Array.uset ◾ x_9 x_4 x_7 ◾;
let x_36 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_35;
ret x_36
Bool.true →
dec x_7;
let x_37 : u8 := Lean.Syntax.isMissing x_11;
case x_37 : u8 of
Bool.false →
let x_38 : u8 := 1;
let x_39 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_11 x_12 x_13 x_15 x_16;
sset x_39[6, 0] : u8 := x_14;
sset x_39[6, 1] : u8 := x_38;
sset x_39[6, 2] : u8 := x_17;
let x_40 : obj := Array.uset ◾ x_9 x_4 x_39 ◾;
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_40;
ret x_41
Bool.true →
dec x_11;
let x_42 : u8 := 1;
inc x_2;
let x_43 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_10 x_2 x_12 x_13 x_15 x_16;
sset x_43[6, 0] : u8 := x_14;
sset x_43[6, 1] : u8 := x_42;
sset x_43[6, 2] : u8 := x_17;
let x_44 : obj := Array.uset ◾ x_9 x_4 x_43 ◾;
let x_45 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_3 x_20 x_44;
ret x_45
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
dec x_2;
dec x_1;
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : u8 := isShared x_3;
case x_6 : u8 of
Bool.false →
let x_7 : obj := proj[0] x_3;
let x_8 : obj := proj[1] x_3;
inc x_2;
let x_9 : obj := app x_2 x_7;
inc x_1;
let x_10 : obj := app x_1 x_9;
set x_3[1] := x_4;
set x_3[0] := x_10;
let x_11 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_8 x_3;
ret x_11
Bool.true →
let x_12 : obj := proj[0] x_3;
let x_13 : obj := proj[1] x_3;
inc x_13;
inc x_12;
dec x_3;
inc x_2;
let x_14 : obj := app x_2 x_12;
inc x_1;
let x_15 : obj := app x_1 x_14;
let x_16 : obj := ctor_1[List.cons] x_15 x_4;
let x_17 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6 x_1 x_2 x_13 x_16;
ret x_17
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
case x_3 : obj of
List.nil →
dec x_2;
dec x_1;
let x_5 : obj := List.reverse._rarg x_4;
ret x_5
List.cons →
let x_6 : u8 := isShared x_3;
case x_6 : u8 of
Bool.false →
let x_7 : obj := proj[0] x_3;
let x_8 : obj := proj[1] x_3;
inc x_2;
let x_9 : obj := app x_2 x_7;
inc x_1;
let x_10 : obj := app x_1 x_9;
let x_11 : obj := ctor_0[Lean.MessageData.ofFormat] x_10;
set x_3[1] := x_4;
set x_3[0] := x_11;
let x_12 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_8 x_3;
ret x_12
Bool.true →
let x_13 : obj := proj[0] x_3;
let x_14 : obj := proj[1] x_3;
inc x_14;
inc x_13;
dec x_3;
inc x_2;
let x_15 : obj := app x_2 x_13;
inc x_1;
let x_16 : obj := app x_1 x_15;
let x_17 : obj := ctor_0[Lean.MessageData.ofFormat] x_16;
let x_18 : obj := ctor_1[List.cons] x_17 x_4;
let x_19 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7 x_1 x_2 x_14 x_18;
ret x_19
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : u8 := isShared x_1;
case x_4 : u8 of
Bool.false →
let x_5 : obj := proj[0] x_1;
let x_6 : obj := proj[1] x_1;
let x_7 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_5;
let x_8 : obj := ctor_3[Std.Format.text] x_7;
let x_9 : obj := ctor_0[Lean.MessageData.ofFormat] x_8;
set x_1[1] := x_2;
set x_1[0] := x_9;
let x_10 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_6 x_1;
ret x_10
Bool.true →
let x_11 : obj := proj[0] x_1;
let x_12 : obj := proj[1] x_1;
inc x_12;
inc x_11;
dec x_1;
let x_13 : obj := _private.Init.Data.Repr.0.Nat.reprFast x_11;
let x_14 : obj := ctor_3[Std.Format.text] x_13;
let x_15 : obj := ctor_0[Lean.MessageData.ofFormat] x_14;
let x_16 : obj := ctor_1[List.cons] x_15 x_2;
let x_17 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_12 x_16;
ret x_17
def List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 (x_1 : obj) (x_2 : obj) : obj :=
case x_1 : obj of
List.nil →
let x_3 : obj := List.reverse._rarg x_2;
ret x_3
List.cons →
let x_4 : obj := proj[0] x_1;
inc x_4;
let x_5 : obj := proj[1] x_1;
inc x_5;
let x_6 : obj := reset[2] x_1;
let x_7 : obj := proj[0] x_4;
inc x_7;
let x_8 : obj := proj[1] x_4;
inc x_8;
let x_9 : obj := proj[2] x_4;
inc x_9;
let x_10 : obj := proj[3] x_4;
inc x_10;
let x_11 : u8 := sproj[6, 0] x_4;
let x_12 : u8 := sproj[6, 1] x_4;
let x_13 : obj := proj[4] x_4;
inc x_13;
let x_14 : obj := proj[5] x_4;
inc x_14;
let x_15 : u8 := sproj[6, 2] x_4;
dec x_4;
let x_16 : obj := Lean.MessageData.ofName x_7;
let x_17 : obj := Lean.MessageData.ofSyntax x_8;
let x_18 : obj := Lean.MessageData.ofName x_9;
let x_19 : obj := Lean.MessageData.ofSyntax x_10;
let x_20 : obj := Array.toList ◾ x_14;
let x_21 : obj := ctor_0[List.nil];
let x_22 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_6._at.Simps.applyProjectionRules._spec_7._at.Simps.applyProjectionRules._spec_8 x_20 x_21;
let x_23 : obj := Lean.MessageData.ofList x_22;
dec x_22;
block_117 (x_24 : obj) :=
let x_25 : obj := ctor_3[Std.Format.text] x_24;
let x_26 : obj := ctor_0[Lean.MessageData.ofFormat] x_25;
block_114 (x_27 : obj) :=
let x_28 : obj := ctor_3[Std.Format.text] x_27;
let x_29 : obj := ctor_0[Lean.MessageData.ofFormat] x_28;
case x_13 : obj of
Option.none →
case x_15 : u8 of
Bool.false →
let x_30 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_31 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_30;
let x_32 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_33 : obj := ctor_1[List.cons] x_32 x_31;
let x_34 : obj := ctor_1[List.cons] x_29 x_33;
let x_35 : obj := ctor_1[List.cons] x_26 x_34;
let x_36 : obj := ctor_1[List.cons] x_19 x_35;
let x_37 : obj := ctor_1[List.cons] x_18 x_36;
let x_38 : obj := ctor_1[List.cons] x_17 x_37;
let x_39 : obj := ctor_1[List.cons] x_16 x_38;
let x_40 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_41 : obj := Lean.MessageData.joinSep x_39 x_40;
dec x_39;
let x_42 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_43 : obj := ctor_7[Lean.MessageData.compose] x_42 x_41;
let x_44 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_45 : obj := ctor_7[Lean.MessageData.compose] x_43 x_44;
let x_46 : obj := 1;
let x_47 : obj := ctor_5[Lean.MessageData.nest] x_46 x_45;
let x_48 : obj := ctor_6[Lean.MessageData.group] x_47;
let x_49 : obj := ctor_1[List.cons] x_48 x_2;
let x_50 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_49;
ret x_50
Bool.true →
let x_51 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_52 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_51;
let x_53 : obj := Simps.instToMessageDataParsedProjectionData._closed_3;
let x_54 : obj := ctor_1[List.cons] x_53 x_52;
let x_55 : obj := ctor_1[List.cons] x_29 x_54;
let x_56 : obj := ctor_1[List.cons] x_26 x_55;
let x_57 : obj := ctor_1[List.cons] x_19 x_56;
let x_58 : obj := ctor_1[List.cons] x_18 x_57;
let x_59 : obj := ctor_1[List.cons] x_17 x_58;
let x_60 : obj := ctor_1[List.cons] x_16 x_59;
let x_61 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_62 : obj := Lean.MessageData.joinSep x_60 x_61;
dec x_60;
let x_63 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_64 : obj := ctor_7[Lean.MessageData.compose] x_63 x_62;
let x_65 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_66 : obj := ctor_7[Lean.MessageData.compose] x_64 x_65;
let x_67 : obj := 1;
let x_68 : obj := ctor_5[Lean.MessageData.nest] x_67 x_66;
let x_69 : obj := ctor_6[Lean.MessageData.group] x_68;
let x_70 : obj := ctor_1[List.cons] x_69 x_2;
let x_71 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_70;
ret x_71
Option.some →
let x_72 : obj := proj[0] x_13;
inc x_72;
dec x_13;
let x_73 : obj := Lean.MessageData.ofExpr x_72;
case x_15 : u8 of
Bool.false →
let x_74 : obj := Simps.instToMessageDataProjectionData._closed_14;
let x_75 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_74;
let x_76 : obj := ctor_1[List.cons] x_73 x_75;
let x_77 : obj := ctor_1[List.cons] x_29 x_76;
let x_78 : obj := ctor_1[List.cons] x_26 x_77;
let x_79 : obj := ctor_1[List.cons] x_19 x_78;
let x_80 : obj := ctor_1[List.cons] x_18 x_79;
let x_81 : obj := ctor_1[List.cons] x_17 x_80;
let x_82 : obj := ctor_1[List.cons] x_16 x_81;
let x_83 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_84 : obj := Lean.MessageData.joinSep x_82 x_83;
dec x_82;
let x_85 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_86 : obj := ctor_7[Lean.MessageData.compose] x_85 x_84;
let x_87 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_88 : obj := ctor_7[Lean.MessageData.compose] x_86 x_87;
let x_89 : obj := 1;
let x_90 : obj := ctor_5[Lean.MessageData.nest] x_89 x_88;
let x_91 : obj := ctor_6[Lean.MessageData.group] x_90;
let x_92 : obj := ctor_1[List.cons] x_91 x_2;
let x_93 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_92;
ret x_93
Bool.true →
let x_94 : obj := Simps.instToMessageDataProjectionData._closed_18;
let x_95 : obj := reuse x_6 in ctor_1[List.cons] x_23 x_94;
let x_96 : obj := ctor_1[List.cons] x_73 x_95;
let x_97 : obj := ctor_1[List.cons] x_29 x_96;
let x_98 : obj := ctor_1[List.cons] x_26 x_97;
let x_99 : obj := ctor_1[List.cons] x_19 x_98;
let x_100 : obj := ctor_1[List.cons] x_18 x_99;
let x_101 : obj := ctor_1[List.cons] x_17 x_100;
let x_102 : obj := ctor_1[List.cons] x_16 x_101;
let x_103 : obj := Simps.instToMessageDataProjectionData._closed_7;
let x_104 : obj := Lean.MessageData.joinSep x_102 x_103;
dec x_102;
let x_105 : obj := Simps.instToMessageDataProjectionData._closed_3;
let x_106 : obj := ctor_7[Lean.MessageData.compose] x_105 x_104;
let x_107 : obj := Simps.instToMessageDataProjectionData._closed_10;
let x_108 : obj := ctor_7[Lean.MessageData.compose] x_106 x_107;
let x_109 : obj := 1;
let x_110 : obj := ctor_5[Lean.MessageData.nest] x_109 x_108;
let x_111 : obj := ctor_6[Lean.MessageData.group] x_110;
let x_112 : obj := ctor_1[List.cons] x_111 x_2;
let x_113 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_5 x_112;
ret x_113;
case x_12 : u8 of
Bool.false →
let x_115 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_114 x_115
Bool.true →
let x_116 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_114 x_116;
case x_11 : u8 of
Bool.false →
let x_118 : obj := Simps.instToMessageDataProjectionData._closed_11;
jmp block_117 x_118
Bool.true →
let x_119 : obj := Simps.instToMessageDataProjectionData._closed_15;
jmp block_117 x_119
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 (x_1 : @& obj) (x_2 : usize) (x_3 : usize) (x_4 : obj) : obj :=
let x_5 : u8 := USize.decEq x_2 x_3;
case x_5 : u8 of
Bool.false →
let x_6 : obj := Array.uget ◾ x_1 x_2 ◾;
let x_7 : usize := 1;
let x_8 : usize := USize.add x_2 x_7;
case x_6 : obj of
Simps.ProjectionRule.rename →
let x_9 : obj := proj[0] x_6;
inc x_9;
let x_10 : obj := proj[1] x_6;
inc x_10;
let x_11 : obj := proj[2] x_6;
inc x_11;
let x_12 : obj := proj[3] x_6;
inc x_12;
dec x_6;
let x_13 : obj := Array.size ◾ x_4;
let x_14 : usize := USize.ofNat x_13;
dec x_13;
let x_15 : usize := 0;
inc x_4;
let x_16 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_14 x_15 x_4;
let x_17 : u8 := Array.contains._at.Lean.findField?._spec_1 x_16 x_9;
dec x_16;
case x_17 : u8 of
Bool.false →
let x_18 : obj := ctor_0[Option.none];
let x_19 : u8 := 1;
let x_20 : u8 := 0;
let x_21 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_22 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_9 x_10 x_11 x_12 x_18 x_21;
sset x_22[6, 0] : u8 := x_19;
sset x_22[6, 1] : u8 := x_20;
sset x_22[6, 2] : u8 := x_20;
let x_23 : obj := Array.push ◾ x_4 x_22;
let x_24 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_23;
ret x_24
Bool.true →
let x_25 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_9 x_10 x_11 x_12 x_14 x_15 x_4;
dec x_9;
let x_26 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_25;
ret x_26
Simps.ProjectionRule.add →
let x_27 : obj := proj[0] x_6;
inc x_27;
let x_28 : obj := proj[1] x_6;
inc x_28;
dec x_6;
let x_29 : obj := Array.size ◾ x_4;
let x_30 : usize := USize.ofNat x_29;
dec x_29;
let x_31 : usize := 0;
inc x_4;
let x_32 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_30 x_31 x_4;
let x_33 : u8 := Array.contains._at.Lean.findField?._spec_1 x_32 x_27;
dec x_32;
case x_33 : u8 of
Bool.false →
let x_34 : obj := ctor_0[Option.none];
let x_35 : u8 := 1;
let x_36 : u8 := 0;
let x_37 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
inc x_28;
inc x_27;
let x_38 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_27 x_28 x_27 x_28 x_34 x_37;
sset x_38[6, 0] : u8 := x_35;
sset x_38[6, 1] : u8 := x_36;
sset x_38[6, 2] : u8 := x_36;
let x_39 : obj := Array.push ◾ x_4 x_38;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_39;
ret x_40
Bool.true →
let x_41 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_27 x_28 x_30 x_31 x_4;
dec x_27;
let x_42 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_41;
ret x_42
Simps.ProjectionRule.erase →
let x_43 : obj := proj[0] x_6;
inc x_43;
let x_44 : obj := proj[1] x_6;
inc x_44;
dec x_6;
let x_45 : obj := Array.size ◾ x_4;
let x_46 : usize := USize.ofNat x_45;
dec x_45;
let x_47 : usize := 0;
inc x_4;
let x_48 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_46 x_47 x_4;
let x_49 : u8 := Array.contains._at.Lean.findField?._spec_1 x_48 x_43;
dec x_48;
case x_49 : u8 of
Bool.false →
let x_50 : obj := ctor_0[Option.none];
let x_51 : u8 := 0;
let x_52 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
inc x_44;
inc x_43;
let x_53 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_43 x_44 x_43 x_44 x_50 x_52;
sset x_53[6, 0] : u8 := x_51;
sset x_53[6, 1] : u8 := x_51;
sset x_53[6, 2] : u8 := x_51;
let x_54 : obj := Array.push ◾ x_4 x_53;
let x_55 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_54;
ret x_55
Bool.true →
let x_56 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_43 x_44 x_46 x_47 x_4;
dec x_43;
let x_57 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_56;
ret x_57
Simps.ProjectionRule.prefix →
let x_58 : obj := proj[0] x_6;
inc x_58;
let x_59 : obj := proj[1] x_6;
inc x_59;
dec x_6;
let x_60 : obj := Array.size ◾ x_4;
let x_61 : usize := USize.ofNat x_60;
dec x_60;
let x_62 : usize := 0;
inc x_4;
let x_63 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_61 x_62 x_4;
let x_64 : u8 := Array.contains._at.Lean.findField?._spec_1 x_63 x_58;
dec x_63;
case x_64 : u8 of
Bool.false →
let x_65 : obj := ctor_0[Option.none];
let x_66 : u8 := 1;
let x_67 : obj := Lean.Parser.Attr._aux_Mathlib_Tactic_Simps_Basic___macroRules_Lean_Parser_Attr_attrSimps?__1._closed_3;
let x_68 : u8 := 0;
inc x_59;
inc x_58;
let x_69 : obj := ctor_0.0.3[Simps.ParsedProjectionData.mk] x_58 x_59 x_58 x_59 x_65 x_67;
sset x_69[6, 0] : u8 := x_66;
sset x_69[6, 1] : u8 := x_66;
sset x_69[6, 2] : u8 := x_68;
let x_70 : obj := Array.push ◾ x_4 x_69;
let x_71 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_70;
ret x_71
Bool.true →
let x_72 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_58 x_59 x_61 x_62 x_4;
dec x_58;
let x_73 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_8 x_3 x_72;
ret x_73
Bool.true →
ret x_4
def Simps.applyProjectionRules._lambda_1 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_6
def Simps.applyProjectionRules._lambda_2._closed_1 : obj :=
let x_1 : obj := pap Lean.Name.instDecidableEq._boxed;
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_2 : obj :=
let x_1 : obj := "Invalid projection names. Two projections have the same name.\nThis is likely because a custom composition of projections was given the same name as an existing projection. Solution: rename the existing projection (before naming the custom projection).";
ret x_1
def Simps.applyProjectionRules._lambda_2._closed_3 : obj :=
let x_1 : obj := Simps.applyProjectionRules._lambda_2._closed_2;
let x_2 : obj := Lean.stringToMessageData x_1;
dec x_1;
ret x_2
def Simps.applyProjectionRules._lambda_2 (x_1 : obj) (x_2 : @& obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_1;
let x_7 : usize := USize.ofNat x_6;
dec x_6;
let x_8 : usize := 0;
inc x_1;
let x_9 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_7 x_8 x_1;
let x_10 : obj := Array.toList ◾ x_9;
let x_11 : obj := Simps.applyProjectionRules._lambda_2._closed_1;
let x_12 : u8 := List.nodupDecidable._rarg x_11 x_10;
case x_12 : u8 of
Bool.false →
dec x_1;
let x_13 : obj := Simps.applyProjectionRules._lambda_2._closed_3;
let x_14 : obj := Lean.throwError._at.Lean.realizeGlobalConstCore._spec_3 x_13 x_3 x_4 x_5;
let x_15 : u8 := isShared x_14;
case x_15 : u8 of
Bool.false →
ret x_14
Bool.true →
let x_16 : obj := proj[0] x_14;
let x_17 : obj := proj[1] x_14;
inc x_17;
inc x_16;
dec x_14;
let x_18 : obj := ctor_1[EStateM.Result.error] x_16 x_17;
ret x_18
Bool.true →
let x_19 : obj := ctor_0[EStateM.Result.ok] x_1 x_5;
ret x_19
def Simps.applyProjectionRules._closed_1 : obj :=
let x_1 : obj := "Projection info after applying the rules: ";
ret x_1
def Simps.applyProjectionRules._closed_2 : obj :=
let x_1 : obj := Simps.applyProjectionRules._closed_1;
let x_2 : obj := Lean.stringToMessageData x_1;
dec x_1;
ret x_2
def Simps.applyProjectionRules (x_1 : obj) (x_2 : obj) (x_3 : @& obj) (x_4 : @& obj) (x_5 : obj) : obj :=
let x_6 : obj := Array.size ◾ x_2;
let x_7 : obj := 0;
let x_8 : u8 := Nat.decLt x_7 x_6;
let x_9 : obj := initFn.«_@».Mathlib.Tactic.Simps.Basic._hyg.1699._closed_2;
inc x_9;
let x_10 : obj := Lean.isTracingEnabledFor._at.Lean.addDecl._spec_8 x_9 x_3 x_4 x_5;
block_28 (x_11 : obj) (x_12 : u8) (x_13 : obj) :=
case x_12 : u8 of
Bool.false →
dec x_9;
let x_14 : obj := ctor_0[PUnit.unit];
let x_15 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_14 x_3 x_4 x_13;
ret x_15
Bool.true →
inc x_11;
let x_16 : obj := Array.toList ◾ x_11;
let x_17 : obj := ctor_0[List.nil];
let x_18 : obj := List.mapTR.loop._at.Simps.applyProjectionRules._spec_9 x_16 x_17;
let x_19 : obj := Lean.MessageData.ofList x_18;
dec x_18;
let x_20 : obj := Simps.applyProjectionRules._closed_2;
let x_21 : obj := ctor_7[Lean.MessageData.compose] x_20 x_19;
let x_22 : obj := Simps.getCompositeOfProjectionsAux._closed_7;
let x_23 : obj := ctor_7[Lean.MessageData.compose] x_21 x_22;
let x_24 : obj := Lean.addTrace._at.Lean.PrettyPrinter.format._spec_2 x_9 x_23 x_3 x_4 x_13;
let x_25 : obj := proj[0] x_24;
inc x_25;
let x_26 : obj := proj[1] x_24;
inc x_26;
dec x_24;
let x_27 : obj := Simps.applyProjectionRules._lambda_2 x_11 x_25 x_3 x_4 x_26;
dec x_25;
ret x_27;
case x_8 : u8 of
Bool.false →
dec x_6;
dec x_2;
let x_29 : obj := proj[0] x_10;
inc x_29;
let x_30 : obj := proj[1] x_10;
inc x_30;
dec x_10;
let x_31 : u8 := unbox x_29;
dec x_29;
jmp block_28 x_1 x_31 x_30
Bool.true →
let x_32 : u8 := Nat.decLe x_6 x_6;
case x_32 : u8 of
Bool.false →
dec x_6;
dec x_2;
let x_33 : obj := proj[0] x_10;
inc x_33;
let x_34 : obj := proj[1] x_10;
inc x_34;
dec x_10;
let x_35 : u8 := unbox x_33;
dec x_33;
jmp block_28 x_1 x_35 x_34
Bool.true →
let x_36 : obj := proj[0] x_10;
inc x_36;
let x_37 : obj := proj[1] x_10;
inc x_37;
dec x_10;
let x_38 : usize := 0;
let x_39 : usize := USize.ofNat x_6;
dec x_6;
let x_40 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_2 x_38 x_39 x_1;
dec x_2;
let x_41 : u8 := unbox x_36;
dec x_36;
jmp block_28 x_40 x_41 x_37
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) : obj :=
let x_4 : usize := unbox x_1;
dec x_1;
let x_5 : usize := unbox x_2;
dec x_2;
let x_6 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_1 x_4 x_5 x_3;
ret x_6
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) (x_6 : obj) (x_7 : obj) : obj :=
let x_8 : usize := unbox x_5;
dec x_5;
let x_9 : usize := unbox x_6;
dec x_6;
let x_10 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_2 x_1 x_2 x_3 x_4 x_8 x_9 x_7;
dec x_1;
ret x_10
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_3 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_4 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : usize := unbox x_4;
dec x_4;
let x_8 : obj := Array.mapMUnsafe.map._at.Simps.applyProjectionRules._spec_5 x_1 x_2 x_6 x_7 x_5;
dec x_1;
ret x_8
def Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) : obj :=
let x_5 : usize := unbox x_2;
dec x_2;
let x_6 : usize := unbox x_3;
dec x_3;
let x_7 : obj := Array.foldlMUnsafe.fold._at.Simps.applyProjectionRules._spec_10 x_1 x_5 x_6 x_4;
dec x_1;
ret x_7
def Simps.applyProjectionRules._lambda_1._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_1 x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
dec x_2;
ret x_6
def Simps.applyProjectionRules._lambda_2._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules._lambda_2 x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
dec x_2;
ret x_6
def Simps.applyProjectionRules._boxed (x_1 : obj) (x_2 : obj) (x_3 : obj) (x_4 : obj) (x_5 : obj) : obj :=
let x_6 : obj := Simps.applyProjectionRules x_1 x_2 x_3 x_4 x_5;
dec x_4;
dec x_3;
ret x_6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment