//
//  MPProductTerm.h
//  MathKit
//
//  Created by Kim Wittenburg on 15.11.14.
//  Copyright (c) 2014 Kim Wittenburg. All rights reserved.
//

#import "MPTerm.h"


/*!
 @header
 This file contains the <code>MPProductTerm</code> class.
 */



@class MPProductTerm;


/*!
    @class      MPProductTerm
    @abstract   A product term consists of n terms that are multiplied together.
 
    @discussion Although they are mutliplied in order of occurrence the child
                terms should be considered having equal priority.
 */
@interface MPProductTerm : MPTerm

/*!
    @method     initWithFactors:
    @abstract   Initializes a new product term with the specified
                <code>factors</code>.
 
    @discussion There is very little checking performed during initialization.
                All objects in the specified array must be valid instances of
                subclasses of <code>@link //apple_ref/occ/cl/MPTerm@/link</code>.
                The array must contain at least one object.
 
    @param      factors
                The factors the product term should be initialized with. The
                array must not be <code>nil</code> and must contain at least one
                object. The contents of the array are not copied, the array
                itself however is.
 
    @return     A new sum term.
 */
- (instancetype)initWithFactors:(NSArray *)factors; /* designated initializer */


/*!
    @property   factors
    @abstract   The receiver's factors.
 
    @discussion This property is guaranteed to be non <code>nil</code>. The
                contents of the array are specified during initialization of the
                receiver.
 */
@property (readonly, nonatomic, strong) NSArray *factors;

@end
