Exercise linearalgebra.linsystem

Description
Solve Linear System

Strategy

<label name="generalsolutiontoalinearsystem">
  <sequence>
    <label name="systemtoechelonformeeo">
      <sequence>
        <rule name="simplify"/>
        <let>
          <decl var="1">
            <orelse>
              <sequence>
                <choice>
                  <label name="dropequations">
                    <choice>
                      <label name="inconsistentsystem01">
                        <rule name="linearalgebra.linsystem.inconsistent"/>
                      </label>
                      <label name="drop00equation">
                        <rule name="linearalgebra.linsystem.trivial"/>
                      </label>
                    </choice>
                  </label>
                  <sequence>
                    <rule name="check"/>
                    <label name="exchangeequations">
                      <orelse>
                        <rule name="linearalgebra.linsystem.exchange"/>
                        <succeed/>
                      </orelse>
                    </label>
                    <label name="scaleequationtoone">
                      <choice>
                        <rule name="linearalgebra.linsystem.scale"/>
                        <succeed/>
                      </choice>
                    </label>
                    <label name="eliminatevariable">
                      <let>
                        <decl var="0">
                          <orelse>
                            <sequence>
                              <rule name="linearalgebra.linsystem.eliminate"/>
                              <var var="0"/>
                            </sequence>
                            <succeed/>
                          </orelse>
                        </decl>
                        <var var="0"/>
                      </let>
                    </label>
                    <label name="coverupfirstequation">
                      <rule name="linearalgebra.linsystem.coverup"/>
                    </label>
                  </sequence>
                </choice>
                <var var="1"/>
              </sequence>
              <succeed/>
            </orelse>
          </decl>
          <var var="1"/>
        </let>
      </sequence>
    </label>
    <label name="backsubstitution">
      <sequence>
        <rule name="linearalgebra.linsystem.freevars"/>
        <label name="backsubstitutionwithequallymanyvariablesandequations">
          <sequence>
            <rule name="simplify"/>
            <label name="coverallequations">
              <rule name="linearalgebra.linsystem.coverall"/>
            </label>
            <let>
              <decl var="1">
                <orelse>
                  <sequence>
                    <label name="uncoveroneequation">
                      <rule name="linearalgebra.linsystem.uncover"/>
                    </label>
                    <label name="scaleequationtoone">
                      <orelse>
                        <rule name="linearalgebra.linsystem.scale"/>
                        <succeed/>
                      </orelse>
                    </label>
                    <label name="backsubstitution">
                      <let>
                        <decl var="0">
                          <orelse>
                            <sequence>
                              <rule name="linearalgebra.linsystem.subst"/>
                              <var var="0"/>
                            </sequence>
                            <succeed/>
                          </orelse>
                        </decl>
                        <var var="0"/>
                      </let>
                    </label>
                    <var var="1"/>
                  </sequence>
                  <succeed/>
                </orelse>
              </decl>
              <var var="1"/>
            </let>
          </sequence>
        </label>
      </sequence>
    </label>
  </sequence>
</label>

Locations

LocationLabel
[]generalsolutiontoalinearsystem
[0]...systemtoechelonformeeo
[0,0]......dropequations
[0,0,0].........inconsistentsystem01
[0,0,0,0]............linearalgebra.linsystem.inconsistent
[1,0,0].........drop00equation
[0,1,0,0]............linearalgebra.linsystem.trivial
[1,0]......exchangeequations
[0,1,0].........linearalgebra.linsystem.exchange
[2,0]......scaleequationtoone
[0,2,0].........linearalgebra.linsystem.scale
[3,0]......eliminatevariable
[0,3,0].........linearalgebra.linsystem.eliminate
[4,0]......coverupfirstequation
[1]...backsubstitution
[0,1]......backsubstitutionwithequallymanyvariablesandequations
[0,0,1].........coverallequations
[1,0,1].........uncoveroneequation
[2,0,1].........scaleequationtoone
[0,2,0,1]............linearalgebra.linsystem.scale
[3,0,1].........backsubstitution
[0,3,0,1]............linearalgebra.linsystem.subst