anchor.diff:              if containsEmptyAnd then NoRestriction else fr
           
           let sortClauses (fr:FrameworkRestriction) =
  -            { OrFormulas = 
  -                fr.OrFormulas
  -                |> List.map (fun andFormula -> { Literals = andFormula.Literals |> List.distinct |> List.sort })
  -                |> List.distinct
  -                |> List.sort }
  +            fr.OrFormulas
  +            |> List.map (fun andFormula -> { Literals = andFormula.Literals |> List.distinct |> List.sort })
  +            |> List.distinct
  +            |> List.sort 
  +            |> fun newOrList -> FrameworkRestriction.WithOrListInternal newOrList fr
           let optimize fr =
               fr
               |> removeNegatedLiteralsWhichOccurSinglePositive
  
positive.code:             let simpleOrLiterals =
                  fr.OrFormulas
                  |> List.choose (function { Literals = [h] } -> Some h | _ -> None)
              { OrFormulas = 
                  fr.OrFormulas
                  |> List.filter (function
                      | { Literals = [h] } ->
  
negative.code:         let removeSubsetLiteralsInAndClause (fr:FrameworkRestriction) =
              let simplifyAndClause (andClause:FrameworkRestrictionAndList) =
                  let literals = andClause.Literals
                  let newLiterals =
                      andClause.Literals
                      |> List.filter (fun literal ->
                          // we filter out literals, for which another literal exists which is a subset
  