Exercise arithmetic.fractions.liberal

Description
simplify fractions liberally

Strategy

<label name="simplify">
  <let>
    <decl var="3">
      <orelse>
        <sequence>
          <let>
            <decl var="1">
              <choice>
                <rule name="arithmetic.operation.integer.plus"/>
                <rule name="arithmetic.operation.integer.minus"/>
                <rule name="arithmetic.operation.integer.times"/>
                <rule name="algebra.manipulation.fraction-times-cancel-nominator-denominator"/>
                <rule name="algebra.manipulation.fraction-times-cancel-denominator-nominator"/>
                <rule name="algebra.manipulation.double-negate"/>
                <rule name="algebra.manipulation.negate-zero"/>
                <rule name="algebra.manipulation.division-denominator"/>
                <rule name="algebra.manipulation.fraction-plus"/>
                <rule name="algebra.manipulation.fraction-times"/>
                <rule name="algebra.manipulation.division-numerator"/>
                <rule name="algebra.manipulation.fraction-plus-scale"/>
                <rule name="algebra.manipulation.simpler-fraction"/>
                <sequence>
                  <rule name="navigator.down"/>
                  <succeed/>
                  <let>
                    <decl var="2">
                      <choice>
                        <var var="1"/>
                        <sequence>
                          <rule name="navigator.right"/>
                          <succeed/>
                          <var var="2"/>
                        </sequence>
                      </choice>
                    </decl>
                    <var var="2"/>
                  </let>
                  <orelse>
                    <rule name="navigator.up"/>
                    <succeed/>
                  </orelse>
                </sequence>
              </choice>
            </decl>
            <var var="1"/>
          </let>
          <var var="3"/>
        </sequence>
        <succeed/>
      </orelse>
    </decl>
    <var var="3"/>
  </let>
</label>

Locations

LocationLabel
[]simplify
[0]...arithmetic.operation.integer.plus
[1]...arithmetic.operation.integer.minus
[2]...arithmetic.operation.integer.times
[3]...algebra.manipulation.fraction-times-cancel-nominator-denominator
[4]...algebra.manipulation.fraction-times-cancel-denominator-nominator
[5]...algebra.manipulation.double-negate
[6]...algebra.manipulation.negate-zero
[7]...algebra.manipulation.division-denominator
[8]...algebra.manipulation.fraction-plus
[9]...algebra.manipulation.fraction-times
[10]...algebra.manipulation.division-numerator
[11]...algebra.manipulation.fraction-plus-scale
[12]...algebra.manipulation.simpler-fraction