#pragma once

#ifndef PLA_operationsH
#define PLA_operationsH

        PLA SizeSortInc( PLA &pla); // Term size sort Incremmentally
        PLA SizeSortDec( PLA &pla); // Term size sort Decremmentally
        PLA IntersectionSortInc( PLA &pla); // Term Intersect Sort incrementally
        PLA IntersectionSortDec( PLA &pla); // Term Intersect Sort decrementally
        PLA SortByMergeInc( PLA &pla); // Term MergeNeighbors Sort incrementally
        PLA SortByMergeDec( PLA &pla); // Term MergeNeighbors Sort decrementally
        void BackMerge( PLA &pla); // MergeNeighbors with orthogonal terms
        PLA EliminateUndefined( PLA &pla); // Remove terms where aren't any "1" in output
        
        
        list<Term> TermDisjointSharp( const Term& t1, const Term& t2 ); // Term disjoint sharp
        PLA *Orto( PLA &pla, int op); // Orthogonalization
  
#endif

